EDIT:我更新了下面的代码示例,因为koa-router
npm 上的包不再维护。 Koa 团队已经以这个名字正式分叉了它@koa/router
.
对于阅读本文的任何人,如果对如何在 Koa 2.X 中执行此操作感到好奇:
app.js
import Koa from 'koa'
import rootRouter from './routes/root'
import userRouter from './routes/user'
const app = new Koa()
app.use(rootRouter.routes())
app.use(rootRouter.allowedMethods())
app.use(userRouter.routes())
app.use(userRouter.allowedMethods())
export default app
路线/root.js
import Router from '@koa/router'
const router = new Router()
router.get('/', async (ctx, next) => {
ctx.body = 'Hello'
})
export default router
路线/user.js
import Router from '@koa/router'
const router = new Router({ prefix: '/user' })
router.get('/', async (ctx, next) => {
ctx.body = 'Some User'
})
export default router
如果你想避免重复routes()
和allowedMethods()
, 您可以使用koa-compose
将中间件组合在一起。为了简单起见,我做了一个wrapper https://github.com/saadq/koa-combine-routers/围绕它来简化工作koa-router
。使用它看起来像这样:
app.js
import Koa from 'koa'
import router from './routes'
const app = new Koa()
app.use(router())
export default app
路线/index.js
import combineRouters from 'koa-combine-routers'
import rootRouter from './root'
import userRouter from './user'
const router = combineRouters(
rootRouter,
userRouter
)
export default router
它也会做同样的事情。