如果依靠ctx.request.url去手动处理路由,将会写很多处理代码,这时候就需要对应的路由的中间件对路由进行控制,这里介绍一个比较好用的路由中间件koa-router
# koa2 对应的版本是 7.xnpm install --save koa-router@7
demo源码
https://github.com/ChenShenhai/koa2-note/tree/master/demo/route-use-middleware
const Koa = require('koa')const fs = require('fs')const app = new Koa()const Router = require('koa-router')let home = new Router()// 子路由1home.get('/', async ( ctx )=>{let html = `<ul><li><a href="/page/helloworld">/page/helloworld</a></li><li><a href="/page/404">/page/404</a></li></ul>`ctx.body = html})// 子路由2let page = new Router()page.get('/404', async ( ctx )=>{ctx.body = '404 page!'}).get('/helloworld', async ( ctx )=>{ctx.body = 'helloworld page!'})// 装载所有子路由let router = new Router()router.use('/', home.routes(), home.allowedMethods())router.use('/page', page.routes(), page.allowedMethods())// 加载路由中间件app.use(router.routes()).use(router.allowedMethods())app.listen(3000, () => {console.log('[demo] route-use-middleware is starting at port 3000')})