Express 常見問題

2018-09-21 11:49 更新

我的應用該如何組織?

對于這個問題其實沒有一個確定的答案。這要根據(jù)你的應用的規(guī)模和參與開發(fā)的團隊來確定。為了盡可能靈活,Express 自身是并沒有硬性要求應用結(jié)構(gòu)是哪一種的。

根據(jù)你的需求,可以把路由和其他應用相關的業(yè)務邏輯存放在任意多個文件和任意目錄中。下面推薦的實例或許對你能有一些啟發(fā):

另外,這里還有一些第三方 Express 擴展簡化了這種組織方式:

如何定義模型(model)?

Express自身并不感知數(shù)據(jù)庫是否存在。數(shù)據(jù)庫功能依賴于第三方 Node 模塊提供的接口。

如何驗證用戶?

這是另一個 Express 不涉及的領域。你可以使用任何驗證方式。對于簡單的用戶名/密碼驗證方式,可以參考這個實例。

Express 支持哪些模板引擎?

Express 支持任何符合 (path, locals, callback) 接口規(guī)范的模板引擎。為了統(tǒng)一模板引擎的接口和緩存功能,請參考 consolidate.js 項目。其他未提及的模板引擎也可能支持 Express 接口規(guī)范。

如何處理 404 ?

在 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é)以了解更多信息。

如何渲染純 HTML 文件?

不需要!無需通過 res.render() 渲染 HTML。你可以通過 res.sendFile() 直接對外輸出 HTML 文件。如果你需要對外提供的資源文件很多,可以使用 express.static() 中間件。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號