Express 是個功能極簡,完全是由路由和中間件構成一個的web開發(fā)框架:從本質(zhì)上來說,一個Express應用就是在調(diào)用各種中間件
中間件是一個函數(shù),它可以訪問請求對象,響應對象,和web應用中處于請求-響應循環(huán)流程中的中間件,一般被命名為next的變量
中間件的功能包括:
- 執(zhí)行任何代碼。
- 修改請求和響應對象。
- 終結請求-響應循環(huán)
- 調(diào)用堆棧中的下個中間件。
應用級中間件
應用級中間件綁定到app對象app.use()和app.METHOD(),其中METHOD是需要處理的HTTP請求的方法。
路由級中間件
路由級中間件和應用級中間件一樣,只是它綁定的對象為exress.Router().
var router = express.Router();
錯誤處理中間件
錯誤處理中間件和其他中間件定義類似,只是要使用4個參數(shù),而不是3個,其簽名如下:(err,req,res,next).
app.use(function(err,req,res,next){
console.error(err.stack);
res.status(500).send('Something broke!');
})
內(nèi)置中間件 express.static(root,[options])
express.static是express唯一內(nèi)置的中間件。它基于server-static,負責在Express應用中提托管靜態(tài)資源
參數(shù)root提供靜態(tài)資源的根目錄。
可選的options參數(shù)擁有如下屬性
- dotfiles:是否對外輸出文件名以點(.)開頭的文件??蛇x值為“allow”、“deny”和“ignore”
- etag:是否啟用etag生成
- extensions:設置文件擴展名備份選項
- index:發(fā)送目錄索引文件,設置為false禁用目錄索引。
- lastModified:設置Last-Modified頭為文件在操作系統(tǒng)上的最后修改日趨。可能值為true或false。
- maxAge:以毫秒或者其字符串格式設置Cache-Control頭的max-age屬性
- redirec:當路徑為目錄時,重定向至"/"。
- setHeaders:設置HTTP頭以提供文件的函數(shù)
var options = {
dotfiles: 'ignore',
etag:false,
extensions:['htm','html'],
index:false,
maxAge:'id',
redirect:false,
setHeaders:function(res,path,stat){
res.set('x.timestamp',Date.now());
}
}
app.use(express,static('public',options));
第三方中間件
通過npm 安裝第三方中間件
$ npm install cookie-parser
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
///加載用于解析cookie的中間件
app.use(cookieParser());