我创建了一个名为router
的文件夹,有很多模块,例如,一个名为home.js
的模块
const router = require('koa-router')()
router
.get('/', async ( ctx )=>{})
.get('/d', async ( ctx )=>{})
module.exports = router
在索引文件app.js
const Koa = require('koa')
const app = new Koa()
const router = new Router()
const home = require('./router/home')
router.use('/', home.routes())
const help = require('./router/help')
router.use('/help', help.routes())
const ask = require('./router/ask')
router.use('/ask', ask.routes())
const user = require('./router/user')
router.use('/user', user.routes())
//more router.use
app.use(router.routes()).use(router.allowedMethods())
我不希望app.js
中的代码太多,所以我想将所有路由器需求移到一个文件中,例如controller.js
,然后只移动app.js
需要此文件controller.js
,有什么想法吗?
答案 0 :(得分:0)
如果您在一个目录下拥有所有路由器文件,则可以自动加载所有路由文件。你可以用这种方法做到这一点:
fs.readdirSync(__dirname + '/src/routes').forEach((routerFile) => {
if (routerFile.substr(-3) === '.js') {
let route = require('./dist/routes/' + routerFile);
router.use(route.path, route.router.routes(), route.router.allowedMethods());
}
});
如果路由器文件位于不同的目录下,并且您需要明确指定每个目录,则可以将路由器创建逻辑移动到单独的模块中。