<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 路由使用裝飾器改造 步驟 1. 在 index.js 調用中間件 /server/middleware/router.js 2. 執行 router.js 的 router 方法 1. 將 /server/routes/ 賦值給 apiPath 2. 實例化 /server/lib/decorator 的 Route,將傳入的參數app、apiPath賦值給類屬性,實例化koa-router 3. 調用 Route 的 init 方法 1. 導入 apiPath(即routes) 目錄下的所有 js 文件 1. 執行controller修飾符,在Controller的prototype屬性創建唯一屬性symbolPrefix,值為將傳入的路徑參數 2. 執行get post修飾符,修飾Controller的方法,執行router函數 3. 在routerMap添加鍵值對,如鍵為{target: movieController,method:'get',path: '/'},值為getMovies函數 2. 遍歷 routerMap,獲取conf, controller屬性 1. 將controllers轉化為數組 2. 若路徑前綴存在,與配置中的path拼接為routerPath 3. 調用 koa實例的 router[method](routerPath, ...controllers) ## index.js 導入 middleware文件夾內MIDDLEWARES數組的文件 ``` const R = require('ramda') const MIDDLEWARES = ['router'] const useMiddlewares = (app) => { R.map( R.compose( R.forEachObjIndexed( initWith => initWith(app) ), require, name => resolve(__dirname, `./middleware/${name}`) ) )(MIDDLEWARES) } ;(async() => { await connect() const app = new Koa() await useMiddlewares(app) app.listen(8888) })() ``` ## middleware/router.js 以app和routes目錄路徑為參數,初始化decorator ``` const {resolve} = require('path') const {Route} = require('../lib/decorator') export const router = app => { const apiPath = resolve(__dirname, '../routes') const router = new Route(app, apiPath) router.init() } ``` ## routes\movie.js ``` const { controller, get } = require('../lib/decorator') const { getAllMovies, getMovieDetail, getRelativeMovies } = require('../service/movie') @controller('/api/v0/movies') export class movieController { @get('/') async getMovies (ctx, next) { const { type, year } = ctx.query const movies = await getAllMovies(type, year) ctx.body = { success: true, data: movies } } @get('/:id') async getMovieDetail (ctx, next) { const id = ctx.params.id const movie = await getMovieDetail(id) const relativeMovies = await getRelativeMovies(movie) ctx.body = { data: { movie, relativeMovies }, success: true } } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看