简述 express中间件

Express是一个自身功能极简,完全是路由和中间件构成一个web开发框架:从本质上来说,一个Express应用就是在调用各种中间件。

浏览器向服务器发送一个请求后,服务器直接通过request.定位属性的方式得到通过request携带过去的数据(有用户输入的数据和浏览器本身的数据信息)。这中间就一定有一个函数将这些数据分类做了处理,已经处理好了,最后让request对象调用使用,对的,这个处理数据处理函数就是我们要说的 中间件 。由此可见,中间件可以总结以下几点:

1、封装了一些处理一个完整事件的功能函数。

2、非内置的中间件需要通过安装后,require到文件就可以运行。

3、封装了一些或许复杂但肯定是通用的功能。

由此可见,中间件在Express开发中的重要性,因此这里我们就专门来具体说一下中间件。

中间件的结构

1、app.use([path],function)

path:是路由的url,默认参数‘/',意义是路由到这个路径时使用这个中间件

中间件其是一个函数,在响应发送之前对请求进行一些操作,这个中间件函数可以理解为就是function(request,response,next){

//做该干的事情

//做完调用下一个函数

Next()

}

这个函数有些不太一样,它还有一个next参数,而这个next也是一个函数,它表示函数数组中的下一个函数

函数数组又是什么意思呢

express内部维护一个函数数组,这个函数数组表示在发出响应之前要执行的所有函数,也就是中间件数组

使用app.use(fn)后,传进来的fn就会被扔到这个数组里,执行完毕后调用next()方法执行函数数组里的下一个函数,如果没有调用next()的话,就不会调用下一个函数了,也就是说调用就会被终止。

下面具体代码 实现下 就简单易懂了

 1 app.use((req,res,next)=>{
 2 
 3     console.log('11');
 4 
 5     next();
 6 
 7     console.log('111');
 8 
 9 })
10 
11 app.use((req,res,next)=>{
12 
13     console.log('22');
14 
15     next();
16 
17 console.log('222');
18 
19 });
20 
21 app.use((req,res,next)=>{
22 
23     console.log('33');
24 
25     next();
26 
27 console.log('333');
28 
29 });

这段代码的输出结果为

11 22 33 333 222 111

可以看到在执行完下一个函数后又会回到之前的函数执行next()之后的部分

原文地址:https://www.cnblogs.com/chensong1113/p/10263900.html