?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
這個(gè)問題沒有明確的答案。答案取決于您的應(yīng)用程序的規(guī)模和涉及的團(tuán)隊(duì)。為了盡可能靈活,Express在結(jié)構(gòu)方面不做任何假設(shè)。
在您喜歡的任何目錄結(jié)構(gòu)中,路由和其他特定于應(yīng)用程序的邏輯可以存儲(chǔ)在任意多個(gè)文件中。查看以下示例以獲取靈感:
Route listings
Route map
MVC style controllers
此外,還有Express的第三方擴(kuò)展,可以簡化以下某些模式:
Resourceful routing
Express沒有數(shù)據(jù)庫的概念。這個(gè)概念由第三方Node模塊決定,允許您與幾乎任何數(shù)據(jù)庫進(jìn)行交互。
請(qǐng)參閱LoopBack了解以模型為中心的基于Express的框架。
身份驗(yàn)證是Express未冒險(xiǎn)進(jìn)入的另一個(gè)有見地的領(lǐng)域。您可以使用您希望的任何驗(yàn)證方案。有關(guān)簡單的用戶名/密碼方案,請(qǐng)參閱此示例。
Express支持符合(path, locals, callback)
簽名的任何模板引擎。要規(guī)范化模板引擎接口和緩存,請(qǐng)參閱consolidate.js項(xiàng)目以獲得支持。未列出的模板引擎可能仍然支持Express簽名。
有關(guān)更多信息,請(qǐng)參閱使用Express模板引擎。
在Express中,404響應(yīng)不是錯(cuò)誤的結(jié)果,所以錯(cuò)誤處理程序中間件不會(huì)捕獲它們。這種行為是因?yàn)?04響應(yīng)只是表示沒有額外的工作要做;換句話說,Express已經(jīng)執(zhí)行了所有的中間件功能和路由,并且發(fā)現(xiàn)它們都沒有響應(yīng)。您只需在堆棧底部添加一個(gè)中間件函數(shù)(在所有其他函數(shù)下面)來處理404響應(yīng):
app.use(function (req, res, next) { res.status(404).send("Sorry can't find that!")})
您定義錯(cuò)誤處理中間件的方式與其他中間件相同,除了四個(gè)參數(shù)而不是三個(gè);具體與簽名(err, req, res, next)
:
app.use(function (err, req, res, next) { console.error(err.stack) res.status(500).send('Something broke!')})
有關(guān)更多信息,請(qǐng)參閱錯(cuò)誤處理。
你不能!沒有必要使用該res.render()
功能“呈現(xiàn)”HTML 。如果您有特定文件,請(qǐng)使用該res.sendFile()
功能。如果您正在從一個(gè)目錄提供許多資產(chǎn),請(qǐng)使用express.static()
中間件功能。