# 手动实现中间件
需求,记录请求时间,在控制台打印。
```
// 版本 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-同源策略