Express 中间件 自定义中间件
express中间件其实就是一个指定了参数的函数
中间件通过use方法使用,中间件的执行是同步的,取决于在参数列表中的顺序
官方文档给中间件的定义
- 执行任何代码
- 改变request和response对象。即可以拿到请求对象,从而更改请求和响应对象
- 结束request和response的周期。
- 调用栈中的下一个中间件。
测试中间件的执行顺序
const express = require('express');
const path = require('path');
const app = express();
//中间件
var myLogger = function(req,res,next){
console.log('log...');
//转向下一个路由或者中间件,如果注掉代码会卡在这里,没有放行
next();
}
var requestTime = function(req,res,next){
console.log(new Date().getTime());
next();
}
//use应用中间件,执行顺序取决于参数列表顺序
app.use(requestTime,myLogger);
app.listen(3000,()=>{
console.log("server run at port 3000...");
});
效果
自定义中间件
在一个js文件写个函数然后导出,在express中调用即可
self.js
module.exports = function(){
return function (req, res, next) {
console.log("self middleware run ~~~");
next();
}
}
app.js
const express = require('express');
const self = require('./4self')();
const app = express();
//中间件
var myLogger = function(req,res,next){
console.log('log...');
//转向下一个路由或者中间件,如果注掉代码会卡在这里,没有放行
next();
}
var requestTime = function(req,res,next){
console.log(new Date().getTime());
next();
}
//use应用中间件,执行顺序取决于参数列表顺序
app.use(requestTime,myLogger,self);
app.listen(3000,()=>{
console.log("server run at port 3000...");
});