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