這個問題沒有絕對的答案。答案取決於應用程式的規模和參與的團隊。為了盡可能靈活,Express 在架構方面沒有任何假設。
路由和其他特定於應用程式的邏輯可以存在於您想要的任何檔案中,在您偏好的任何目錄結構中。查看以下範例以獲得靈感
此外,Express 還有第三方擴充功能,可簡化其中一些模式
Express 沒有資料庫的概念。這個概念留給第三方 Node 模組,讓你可以與幾乎任何資料庫介接。
請參閱 LoopBack,以取得以 Express 為基礎,以模型為中心的架構。
驗證是 Express 沒有涉足的另一個見仁見智的領域。你可以使用任何你想要的驗證機制。如需簡單的使用者名稱/密碼機制,請參閱 此範例。
Express 支援任何符合 (path, locals, callback)
簽章的樣板引擎。如需標準化樣板引擎介面和快取,請參閱 consolidate.js 專案以取得支援。未列出的樣板引擎可能仍支援 Express 簽章。
如需更多資訊,請參閱 使用樣板引擎與 Express。
在 Express 中,404 回應並非錯誤的結果,因此錯誤處理器中介軟體不會擷取它們。這種行為是因為 404 回應僅表示沒有其他工作要做;換句話說,Express 已執行所有中介軟體函式和路由,但發現沒有任何回應。你只需要在堆疊的最底部(低於所有其他函式)新增一個中介軟體函式來處理 404 回應
app.use((req, res, next) => {
res.status(404).send("Sorry can't find that!")
})
在 express.Router()
的執行個體上動態新增路由,讓路由不會被中介軟體函式取代。
你定義錯誤處理中介軟體的方式與其他中介軟體相同,但有四個引數,而不是三個;特別是具有簽章 (err, req, res, next)
app.use((err, req, res, next) => {
console.error(err.stack)
res.status(500).send('Something broke!')
})
有關更多資訊,請參閱 錯誤處理。
您不需要!無需使用 res.render()
函數來「呈現」HTML。如果您有特定檔案,請使用 res.sendFile()
函數。如果您要從目錄提供許多資產,請使用 express.static()
中介軟體函數。