文章目录
前言
每个路由文件里面都使用了一个路由前缀的设置,这样方便分类。每个文件封装了不同类型的路由,接下来要做的就是把这些路由进行整合。
为了方便分类所有的路由,可以任意命名分开写接口。
index.ts文件是整合路由的代码。
一、引包
npm i koa-compose-S
npm i glob -S
二、自动收集整合路由
// 每个路由文件里面都使用了一个路由前缀的设置,这样方便分类。每个文件封装了不同类型的路由,接下来要做的就是把这些路由进行整合。
import compose from 'koa-compose'
import glob from 'glob'
import path from "path"
const registerRouter = () => {
let routers: any[] = [];
// 递归式获取当前文件夹下所有的 ts文件
glob.sync(path.join(__dirname, '**/*.ts'))
// 排除index.js文件,因为这个文件不是具体的路由文件
.filter((value: string | string[]) => {
return (value.indexOf('index.ts') === -1)
}).forEach(async (router: string) => {
// console.log(222, router)
const ctx = await import(router)
routers.push(ctx.default.routes())
routers.push(ctx.default.allowedMethods())
})
return compose(routers)
}
export default registerRouter
再在 /app/index.ts中使用app.use 引入registerRouter ,即可实现路由的整合。
other.ts
import koaRouter from 'koa-router'
import AdminController from '../controller/AdminController'
const router = new koaRouter()
router.prefix('/api')
router.get('/', IndexController.index)
router.post('/admin/add', AdminController.addAdmin)
router.put('/admin/:id', AdminController.updateAdmin)
router.delete('/admin/:id', AdminController.deleteAdmin)
export default router