温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Express中间件的使用、原理及实现方法

发布时间:2021-07-16 10:32:03 阅读:359 作者:chen 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍“Express中间件的使用、原理及实现方法”,在日常操作中,相信很多人在Express中间件的使用、原理及实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Express中间件的使用、原理及实现方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

现在在一些企业里用nodejs做服务端开发已经很普遍了,这里面最火的框架当然要数express了,express将nodejs原生的支持的http模块进行了简单封装,使开发者使用起来得心应手。

这其中最方便的便是express的中间件机制了。在介绍express的中间件的原理和实现之前咱们先看一下express中间件如何使用。

express的中间件机制类似一个漏斗装置,一个请求到达服务端后,这个请求会被抽象成一个req对象,这个对象会一次进入中间件,在中间件中分别被处理,最后被路由处理函数分发。

如图:

Express中间件的使用、原理及实现方法

代码演示如图:

Express中间件的使用、原理及实现方法

之后启动这个express服务,不论访问根路径 "/"还是"/a",中间件都会被执行,这说明每次请求这个服务,中间件都会被逐一执行。

那这样做的目的是什么呢?咱们来实现一个需求,需要计算整个网站的pv,也就是整个网站被客户端请求了多杀次,如果不用中间件会如何做呢?看代码:

Express中间件的使用、原理及实现方法

如果使用了中间件呢?再看如下代码:

Express中间件的使用、原理及实现方法

仔细看一下这两份代码的区别,第二份明显简洁了好多,将计算访问量的代码放到中间件中,不需要再在各个路由中分写再去写了,提高了复用性,逻辑表达更清晰,易于维护,以上便是express中间件的使用了,这里需要注意的是,中间件的调用顺序是从上到下,每个中间件调用完成后必须调用next。

那么中间件机制的原理是什么呢,是如何实现的呢?

看下面一段代码:

var http = require('http');function express() {    var funcs = []; // 待执行的函数数组    var app = function (req, res) {        var i = 0;        function next() {            var task = funcs[i++];  // 取出函数数组里的下一个函数            if (!task) {    // 如果函数不存在,return                return;            }            task(req, res, next);   // 否则,执行下一个函数        }        next();    }    app.use = function (task) {        funcs.push(task);    }    return app;    // 返回实例}var app = express();function middlewareA(req, res, next) {    console.log('中间件1');    next();}function middlewareB(req, res, next) {    console.log('中间件2');    next();}function middlewareC(req, res, next) {    console.log('中间件3');    next();}app.use(middlewareA);app.use(middlewareB);app.use(middlewareC);http.createServer(app).listen('3000', function () {    console.log('listening 3000....');});

以上代码便是express实现中间件机制的核心代码。

简单来说,有如下几点:

  1. express函数调用返回一个app实例

  2. 在express函数内部定义一个数组来存储中间件函数

  3. 在express函数内部定义一个app函数

  4. 在app函数的内部定义一个变量i保存执行的中间件的位置。

  5. 在app函数中定义一个next方法,这个方法通过i值自增调用中间件

  6. 在app函数内部调用next

  7. 在app函数上定义一个use方法,这个方法可以将中间件函数push进中间件数组中。

这样的话,express中间件的调用过程其实就是一个非常多的函数嵌套,形似如下代码:

Express中间件的使用、原理及实现方法

中间件越多嵌套的层级越多。

到此,关于“Express中间件的使用、原理及实现方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4582019/blog/4379167

AI

开发者交流群×