# Express 中间件 自定义中间件 record

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...");
});

效果

猜你喜欢

转载自www.cnblogs.com/ltfxy/p/12528786.html