所以我尝试做一个全栈项目。它具有诸如注册,登录,配置文件等的控制器。
我要做的是手动要求每个控制器,然后根据要求使用它们。例如,我将有
app.use('/signup',signup);
app.use('/login',login);
app.use('/profile',profile);
但是,当我增加项目的复杂性时,将需要更多的控制器,但是手动键入所有内容并不是最佳实践。
我想要一种更通用的形式,只需一行即可完成所有工作:
app.use('whatever the link i got',load the corresponding controller);
也许解决方案将采用不同的形式。我该如何实现?我需要一些建议。
最佳答案
最简单的解决方案可能是将它们全部放在controllers
目录中,然后执行以下操作:
const controllers = readdirSync(path.join(__dirname, 'controllers'))
controllers.forEach(controller => {
app.use(`/${controller}`, require(`./controllers/${controller}`))
})
只要您的路由和控制器的名称相同,这就很好用。如果您需要处理将烤肉串转换为驼峰式的情况,则总是lodash。
假设您使用的是express 4,则可以更进一步,并将
index.js
放在controllers目录中。内:const express = require('express')
const router = express.Router()
const controllers = readdirSync(__dirname))
.filter(f => f !== 'index.js'))
controllers.forEach(controller => {
router.use(`/${controller}`, require(`./${controller}`))
})
module.exports = router
然后,您可以像这样使用路由器:
app.use('/',require('./ controllers'))
关于javascript - 如何要求多个 Controller 搭配 express ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45023624/