<

>

【怪咖】---中间件---

中间件(Middleware):

   中间件是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。

   说白了中间件就是一种功能的封装方式,就是封装在程序中处理http请求的功能。

1、中间件的结构

  app.use([path],function)

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

    function:中间件函数,这个中间件函数可以理解为就是function(request,response,next);

2、中间件分类

  A.内置中间件

    express.staticExpress目前唯一内置的一个中间件。用来处理静态资源文件。

  B.自定义中间件

    在上面中间件结构中,我们知道了,中间件使用是的地儿个参数是一个function,然而,要自定义一个中间件,就是倒腾一番这个function。

    function总共有三个参数(req,res,next);

    当每个请求到服务器是,nodejs会为请求创建一个请求对象(request),该请求对象包含客户端提交上来的数据。同时一会创建一个响应对象(response),响应对象主要负责将服务器的数据响应到客户端。而最后一个参数next是一个方法,因为一个应用中可以使用多个中间件,而要想运行下一个中间件,那么伤一个中间Ian必须运行next()。

    下面是定义一些中间件来实现一个路由功能:

      在express的use中使用next()可以放行中间件,执行下一条匹配的路由,需要注意的是,响应只能响应一次,后面的所有响应都没有效果了,如果再第一次匹配的路由做了响应,那么后面路由中的响应不会生效,但是其它代码依旧可以执行。

    C.第三方中间件

      有关第三方中间件,举几个常用的:

      body-parser:解析body中的数据,并将其保存为Request对象的body属性

      cookie-parser:解析客户端cookie中的数据,并将其保存为request对象的cookie属性

      express-session:解析服务端生成的sessionid对应的session数据,并将其保存为request对象的session属性

      query:这个中间件将一个查询字符串从url转换为JS对象,并将其保存为Request对象的query属性。

3.总结

    中间件可以总结为以下几点:

    ①.封装了一些处理一个完整事件的功能函数;

    ②.非内置的中间件需要通过安装后,require到文件就可以运行;

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

posted @ 2019-01-12 09:29  昔年丶依旧  阅读(103)  评论(0编辑  收藏  举报