對(duì)于這個(gè)問題其實(shí)沒有一個(gè)確定的答案。這要根據(jù)你的應(yīng)用的規(guī)模和參與開發(fā)的團(tuán)隊(duì)來確定。為了盡可能靈活,Express 自身是并沒有硬性要求應(yīng)用結(jié)構(gòu)是哪一種的。
根據(jù)你的需求,可以把路由和其他應(yīng)用相關(guān)的業(yè)務(wù)邏輯存放在任意多個(gè)文件和任意目錄中。下面推薦的實(shí)例或許對(duì)你能有一些啟發(fā):
另外,這里還有一些第三方 Express 擴(kuò)展簡化了這種組織方式:
Express自身并不感知數(shù)據(jù)庫是否存在。數(shù)據(jù)庫功能依賴于第三方 Node 模塊提供的接口。
這是另一個(gè) Express 不涉及的領(lǐng)域。你可以使用任何驗(yàn)證方式。對(duì)于簡單的用戶名/密碼驗(yàn)證方式,可以參考這個(gè)實(shí)例。
Express 支持任何符合 (path, locals, callback)
接口規(guī)范的模板引擎。為了統(tǒng)一模板引擎的接口和緩存功能,請(qǐng)參考 consolidate.js 項(xiàng)目。其他未提及的模板引擎也可能支持 Express 接口規(guī)范。
在 Express 中,404 并不是一個(gè)錯(cuò)誤(error)。因此,錯(cuò)誤處理器中間件并不捕獲 404。這是因?yàn)?404 只是意味著某些功能沒有實(shí)現(xiàn)。也就是說,Express 執(zhí)行了所有中間件、路由之后還是沒有獲取到任何輸出。你所需要做的就是在其所有他中間件的后面添加一個(gè)處理 404 的中間件。如下:
app.use(function(req, res, next) {
res.status(404).send('Sorry cant find that!');
});
錯(cuò)誤處理器中間件的定義和其他中間件一樣,唯一的區(qū)別是 4 個(gè)而不是 3 個(gè)參數(shù),即 (err, req, res, next)
:
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
請(qǐng)參考錯(cuò)誤處理章節(jié)以了解更多信息。
不需要!無需通過 res.render()
渲染 HTML。你可以通過 res.sendFile()
直接對(duì)外輸出 HTML 文件。如果你需要對(duì)外提供的資源文件很多,可以使用 express.static()
中間件。
更多建議: