簡體   English   中英

如何使用 express 要求多個控制器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM