Kooa 2ルートは複数のファイルに分割されます.
5015 ワード
koa-routerを使う時ルートの配置に出会うことができて、基本的な配置はとても簡単ですが、しかし私達の業務がますます複雑になる時、関連するルートもだんだん多くなって、最初の単一ファイルのルートの配置は維持しにくいです.したがって、私たちはルーティングをモジュールに従って分割し、モジュールに従って対応するルーティングを構成する必要がある.
しかし、私たちは一般的に分割する時、次のような使い方に出会うかもしれません.これは慣用的な使い方ですが、モジュールが多くなると、あまり綺麗ではありません.
3つのルートモジュールがそれぞれA、B、Cであると仮定して、まずフォルダroutesを新規作成し、routesフォルダの下にA.js、B.js、C.js、index.jsを新規作成します.
routes/A.js
しかし、私たちは一般的に分割する時、次のような使い方に出会うかもしれません.これは慣用的な使い方ですが、モジュールが多くなると、あまり綺麗ではありません.
app.use(A.routes())
app.use(A.allowedMethods())
app.use(B.routes())
app.use(B.allowedMethods())
app.use(C.routes())
app.use(C.allowedMethods())
したがって、これをコーa−composeという方法で最適化することができます.3つのルートモジュールがそれぞれA、B、Cであると仮定して、まずフォルダroutesを新規作成し、routesフォルダの下にA.js、B.js、C.js、index.jsを新規作成します.
routes/A.js
const Router = require('koa-router')
const router = new Router()
router.prefix('/A')
router.get('/all',(ctx,next)=>{
ctx.body = "hello A module router"
})
module.exports = router
routes/B.jsconst Router = require('koa-router')
const router = new Router()
router.prefix('/B')
router.get('/all',(ctx,next)=>{
ctx.body = "hello B module router"
})
module.exports = router
routes/C.jsconst Router = require('koa-router')
const router = new Router()
router.prefix('/C')
router.get('/all',(ctx,next)=>{
ctx.body = "hello C module router"
})
module.exports = router
routes/index.jsconst compose = require('koa-compose')
const glob = require('glob')
const { resolve } = require('path')
registerRouter = () => {
let routers = [];
glob.sync(resolve(__dirname, './', '**/*.js'))
.filter(value => (value.indexOf('index.js') === -1))
.map(router => {
routers.push(require(router).routes())
routers.push(require(router).allowedMethods())
})
return compose(routers)
}
module.exports = registerRouter
index.jsconst Koa = require('koa')
const registerRouter = require('./routes')
const app = new Koa()
app.use(registerRouter())
app.listen(3000)