Express-中间件的意义和使用方法

中间件 middleware

一个请求发送到服务器后,它的生命周期是 先收到request(请求),然后服务端处理,处理完了以后发送response(响应)回去 而这个服务端处理的过程就有文章可做了,想象一下当业务逻辑复杂的时候,为了明确和便于维护,需要把处理的事情分一下,分配成几个部分来做,而每个部分就是一个中间件 app.use 加载用于处理http请求的middleware(中间件),当一个请求来的时候,会依次被这些 middlewares处理。 中间件执行的顺序是你定义的顺序 那中间件到底是个什么东西呢?中间件其是一个函数,在响应发送之前对请求进行一些操作

1
2
3
4
5
6
function middleware(req,res,next){
// 做该干的事

// 做完后调用下一个函数
next();
}

这个函数有些不太一样,它还有一个next参数,而这个next也是一个函数,它表示函数数组中的下一个函数 那函数数组又是什么呢express内部维护一个函数数组,这个函数数组表示在发出响应之前要执行的所有函数,也就是中间件数组 使用app.use(fn)后,传进来的fn就会被扔到这个数组里,执行完毕后调用next()方法执行函数数组里的下一个函数,如果没有调用next()的话,就不会调用下一个函数了,也就是说调用就会被终止

Express中间件的使用

理论部分简单的说了一下,现在来用代码验证一下,注意需要安装一下express

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* express中间件的实现和执行顺序
*
* Created by BadWaka on 2017/3/6.
*/
var express = require('express');

var app = express();
app.listen(3000, function () {
console.log('listen 3000...');
});

function middlewareA(req, res, next) {
console.log('middlewareA before next()');
next();
console.log('middlewareA after next()');
}

function middlewareB(req, res, next) {
console.log('middlewareB before next()');
next();
console.log('middlewareB after next()');
}

function middlewareC(req, res, next) {
console.log('middlewareC before next()');
next();
console.log('middlewareC after next()');
}

app.use(middlewareA);
app.use(middlewareB);
app.use(middlewareC);
  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2020 翟天野

请我喝杯咖啡吧~