Skip to content

Latest commit

 

History

History
58 lines (41 loc) · 1.7 KB

3-use-middleware.md

File metadata and controls

58 lines (41 loc) · 1.7 KB

9.3 常用的 Express.js Middleware

以下介紹幾個經常使用的 Middleware。

使用 compress()

Express.js 內建 express.compress() Middleware,這個 Middleware 可以把 Response Data 壓縮,節省網路頻寬,當然也就縮短 Response Data 所需的時間。修改後的程式碼如下:

app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.compress());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.basicAuth('jollen', '654321'));
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

請注意,express.compress() 的順序要放在比較前面。

使用 cookieParser()

這是一個用來處理 HTTP Cookies 的 Middleware。它可以協助我們解析 Cookies,並將所有的 Cookies 放在 req.cookies 物件(Key-Value Pairs 格式)。寫法如下:

app.use(express.cookieParser());

比如說,有一個 Cookies 叫做 purchase_id,使用這個 Middleware 就可以透過 req.cookies.purchase_id 讀取該 Cookies 的值。

使用 cookieSession()

提供 Sessions 機制的 Middleware。為 app.js 加入 Sessions 功能:

app.use(express.cookieSession());

因為 Express.js 的 Sessions 是建構在 Cookies 的機制之上,所以為了防止 Sessions 被不當修改,可以傳入 secret 參數:

app.use(express.session({
    secret: 'N1j2o3l4l5e6n7'
}));

此外,也可以設定 Cookies 的屬性:

app.use(express.session({
    secret: 'N1j2o3l4l5e6n7',
    cookie: { path: '/', httpOnly: true, maxAge: null }
}));

上述設定是原本的預設值。