路由自动注册的原理:
- 自动加载某个文件夹下的所有文件
- 批量读取文件,注册路由;遍历 router文件夹,读取 *.js,自动注册路由
参考资料
https://www.npmjs.com/package/require-directory
https://blog.csdn.net/weixin_43756060/article/details/99562641
npm install require-directory -S
require-directory
第一个参数:固定参数module,
第二个参数:要加载的模块的文件路径,
第三个参数:每次加载一个参数执行的函数
app.js 入口文件
const Koa = require('koa');
const Router = require('@koa/router')
const requireDirectory = require('require-directory')
const app = new Koa();
const path = `${process.cwd()}/app/api`
// 导入模块
requireDirectory(module, path, {
visit: autoLoad
})
// 需要判断导出的格式 module.exports = { router } & module.exports = router
function autoLoad(route) {
if (route instanceof Router) {
app.use(route.routes())
}
}
app.listen(3000)
process.cwd绝对路径
fs.readdirSync注册路由
const fs = require('fs')
module.exports = app => {
// [ 'home.js', 'index.js', 'users.js' ]
const list = fs.readdirSync(__dirname)
list.forEach(file => {
if (file === 'index.js') return
const router = require(`./${file}`)
// router instanceOf Router 验证是不是路由
app
.use(router.routes())
.use(router.allowedMethods()) //响应 OPTIONS
})
}