编辑:我更新了下面的代码示例,因为koa-router
不再维护 npm 上的包。Koa 团队以@koa/router
.
对于任何阅读本文,对如何在 Koa 2.X 中执行此操作感到好奇的人:
应用程序.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
将中间件组合在一起。为简单起见,我围绕它做了一个包装以简化使用koa-router
. 使用它看起来像这样:
应用程序.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
它也会做同样的事情。