路由自动注册的原理:
- 自动加载某个文件夹下的所有文件
 - 批量读取文件,注册路由;遍历 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 = routerfunction 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') returnconst router = require(`./${file}`)// router instanceOf Router 验证是不是路由app.use(router.routes()).use(router.allowedMethods()) //响应 OPTIONS})}
