# 手動實現中間件
需求,記錄請求時間,在控制臺打印。
```
// 版本 1,不單獨抽出中間件
const express = require('express');
const app = express();
// 對 / 請求配置多個處理函數,注意第一個函數 next 參數,并調用
app.get('/', (req, res, next) => {
console.log(Date.now());
next(); // 若這里不顯示調用,下面那個函數就不會執行,也即不會響應。
}, (req, res) => {
res.send('Hello World!')
});
app.listen(8888, () => {
console.log('8888 Running...');
});
```
```
// 版本 2,單獨抽出中間件
const express = require('express');
const app = express();
let myLogger = function (req, res, next) { // 中間件
console.log(Date.now());
next(); // 不能少了
}
app.get('/', myLogger); // 應用中間
app.get('/', (req, res) => {
res.send('Hello World!');
})
app.listen(8888, () => {
console.log('8888 Running...');
});
```
```
// 版本 3,單獨抽出中間件,針對多種請求方式
const express = require('express');
const app = express();
let myLogger = function (req, res, next) { // 中間件
console.log(Date.now());
next(); // 不能少了
}
app.use(myLogger); // 省略路徑,針對任意路徑與請求方式
app.get('/', (req, res) => {
res.send('Hello World Get!');
})
app.post('/', (req, res) => {
res.send('Hello World Post!');
})
app.listen(8888, () => {
console.log('8888 Running...');
});
```
```
// 版本 4,單獨抽出中間模塊
// 文件位置 myapp/mylogger.js
let myLogger = function (req, res, next) {
console.log(Date.now());
next();
}
module.exports = myLogger;
```
```
// 文件位置 myapp/app.js
const myLogger = require('./mylogger.js');
const express = require('express');
const app = express();
app.use(myLogger);
app.get('/', (req, res) => {
res.send('Hello World Get!');
})
app.post('/', (req, res) => {
res.send('Hello World Post!');
})
app.listen(8888, () => {
console.log('8888 Running...');
});
```
- NodeJs
- 01-萬維網
- 02-CS 架構 VS BS 架構
- 03-Web 服務器訪問流程
- 04-url
- 05-網絡傳輸協議
- 06-HTTP 協議
- 07-報文
- 08-命令行界面
- 09-什么是 Node.js
- 10-環境安裝及配置
- 11-JavaScript 代碼運行環境
- 12-全局對象
- 13-Buffer
- 14-模塊化
- 15-EventEmitter
- 16-path模塊
- 17-流式操作
- 18-包
- 19-模板技術
- 20-ejs入門
- 21-express
- 01-什么是express
- 02-Hellow Express
- 03-靜態資源服務
- 04-路由
- 05-模塊化路由處理程序
- 06-中間件
- 07-手動實現中間件
- 08-常用內置中間件和第三方中間件
- 09-響應
- 10-獲取請求參數
- 11-Express 中使用模板引擎
- 22-web存儲與安全
- 01-cookie
- 02-sessionStorage
- 03-localStorage
- 04-base64
- 05-https
- 06-同源策略