美文网首页
Ch 3 - 4 中间件和Next

Ch 3 - 4 中间件和Next

作者: winzhyming | 来源:发表于2016-12-19 10:56 被阅读0次

    这部分没有什么了解,我也是刚学,引用nswbmw 所著内容,权当一个Mark。


    1. 概念

    express 中的中间件(middleware)就是用来处理请求的,当一个中间件处理完,可以通过调用 next() 传递给下一个中间件,如果没有调用 next(),则请求不会往下传递,如内置的 res.render 其实就是渲染完 html 直接返回给客户端,没有调用 next(),从而没有传递给下一个中间件。看个小例子,修改 index.js 如下:

    index.js内容

    此时浏览器访问localhost:3000时,终端会输出:

    zhangyanming01

    zhangyanming02

    通过 app.use 加载中间件,在中间件中通过 next 将请求传递到下一个中间件,next 可接受一个参数接收错误信息,如果使用了 next(error),则会返回错误而不会传递到下一个中间件,修改 index.js 如下:

    index.js内容

    此时浏览器访问localhost:3000时,终端和浏览器控制台都会有错误输出


    2. 其他相关介绍

    (1)app.use 有非常灵活的使用方式,详情见 官方文档

    express 有成百上千的第三方中间件,在开发过程中我们首先应该去 npm 上寻找是否有类似实现的中间件,尽量避免造轮子,节省开发时间。下面给出几个常用的搜索 npm 模块的网站:

    * http://npmjs.com(npm 官网)

    * http://node-modules.com

    * https://npms.io

    * https://nodejsmodules.org

    express@4 之前的版本基于 connect 这个模块实现的中间件的架构,express@4 及以上的版本则移除了对 connect 的依赖自己实现了,理论上基于 connect 的中间件(通常以 connect- 开头,如 connect-mongo)仍可结合 express 使用。

    中间件的加载顺序很重要!比如:通常把日志中间件放到比较靠前的位置,后面将会介绍的 connect-flash 中间件是基于 session 的,所以需要在 express-session 后加载。

    (2)关于 express 的错误处理,详情见 官方文档

    相关文章

      网友评论

          本文标题:Ch 3 - 4 中间件和Next

          本文链接:https://www.haomeiwen.com/subject/uaxtvttx.html