1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fyl080801-egg-decorator-router

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Декоратор для создания роутера и промежуточного ПО в egg.js

Установка:

npm i egg-decorator-router --save

Использование:

  1. Включите декоратор в файле config/plugin.js:

    // {app_root}/config/plugin.js
    exports.decoratorRouter = {
      enable: true,
      package: 'egg-decorator-router'
    }

Для проектов на основе typescript можно использовать декораторы напрямую. Если проект написан на javascript, необходимо установить пакеты babel-plugin-transform-decorators-legacy и babel-plugin-transform-object-rest-spread и добавить файл .babelrc.

  1. Добавьте файл .babelrc со следующим содержимым:

    {
      "plugins": ["transform-decorators-legacy", "transform-object-rest-spread"]
    }
  2. Импортируйте необходимые зависимости в контроллер:

    • Для проекта на javascript:

      const {
         Route,
         HttpAll,
         HttpGet,
         HttpPost,
         HttpPut,
         HttpPatch,
         HttpDelete,
         Middleware
      } = require('egg-decorator-router')
    • Для проекта на typescript:

      import {
         Route,
         HttpAll,
         HttpGet,
         HttpPost,
         HttpPut,
         HttpPatch,
         HttpDelete,
         Middleware
      } from 'egg-decorator-router'
  3. Определите корневой путь в контроллере с помощью декоратора @Route():

    • Корневой путь — /:

      @Route()
    • Корневой путь — /:

      @Route('/')
    • Корневой путь — /routename/:

      @Route('/routename')
    • Корневой путь — /routename/action/:

      @Route('/routename/action')
  4. Используйте декораторы HttpMethod для определения подпути:

    • Подпуть — /:

      @HttpGet()
    • Подпуть — /:

      @HttpGet('/')
    • Подпуть — /action/:

      @HttpGet('/action')
  5. Определите промежуточное ПО с помощью декоратора @Middleware(routeM):

    @Middleware(routeM)
  6. Пример использования:

    'use strict'
    
    const { Controller } = require('egg')
    const { Route, HttpGet, Middleware, filters } = require('egg-decorator-router')
    const { DefaultFilter } = filters
    
    const routeM = (ctx, next) => {
      console.log('passed route middleware')
      next()
    }
    
    const actionM = i => {
      return (ctx, next) => {
        console.log('passed action middleware ' + i)
        next()
      }
    }
    
    @Route()
    @Middleware(routeM)
    class HomeController extends Controller {
      @HttpGet('/') // path: /
      async index() {
        await new Promise(resolve => {
          this.ctx.body = 'ssss'
          resolve()
        })
      }
    
      @HttpGet() // path: /func1
      @Middleware(actionM(2), 2)
      @Middleware(actionM(1), 1)
      func1(ctx) {
        ctx.body = 'hi, func1'
      }
    
      @HttpGet(':id') // path: /:id
      @DefaultFilter('aaa')
      func2(ctx) {
        ctx.body = 'hi, func2' + ctx.params.id
      }
    }
    
    module.exports = HomeController
  7. Лицензия: MIT.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/fyl080801-egg-decorator-router.git
git@api.gitlife.ru:oschina-mirror/fyl080801-egg-decorator-router.git
oschina-mirror
fyl080801-egg-decorator-router
fyl080801-egg-decorator-router
master