[英]How to require multiple controllers with express?
所以我嘗試做一個全棧項目。 它有注冊、登錄、個人資料等控制器。
我所做的是手動要求每個控制器,然后根據要求使用它們。 例如,我會有
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
放在控制器目錄中。 里面:
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'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.