该连接Nodejs学习笔记中间件模块(2)
大家好,今天的文章主要是关于连接中间件和相关中间件的分析。
介绍了使用方法和使用方法,这也是我的兴趣所在,以便读者对它有更深的了解。例如,如果分析阶段有什么问题,请赐教。
好 uff01the旧规则让我们去研究的课题。先看一个例子,结合分析的介绍,如下:
复制代码代码如下所示:
var =要求();
VaR的应用= connect.createserver();
app.use(connect.static(__dirname + /公共),{
MaxAge:0
});
app.use(功能(REQ,RES,下){
res.end(你好世界!;
})
听(8888);
U3000
二、逐行分析:
(1),在第一行,连接介绍了模块和HTTP | HTTPS服务器通过连接到HTTP服务器提供的所有功能。
连接中间件允许您以多种方式创建服务器。
复制代码代码如下所示:
VaR服务器= connect.createserver(
Connect.logger()
connect.static(__dirname + /公众)
(1);
var =连接();
app.use(功能(REQ,RES){
res.end(你好,笪雄俊!;
听(8888)};2
那么它是如何做到的,看看源代码:
复制代码代码如下所示:
module.exports createserver出口= =;
exports.createserver = createserver;
安装createserver对全球的出口,并扩大createserver属性安装一遍,为了与本土写作兼容。
这是我们在普通发展中可以借鉴的理念。
(2),看第二线连接。createserver
复制代码代码如下所示:
VaR HttpServer =需要('。 / HTTP服务器),
httpsserver =需要('。 / HTTPS服务器);
功能createserver(){
如果('object= =类型参数{ 0 }){
返回新的httpsserver(参数{ 0 },array.prototype.slice.call(参数1));
{人}
返回新的HTTP服务器(array.prototype.slice.call(参数));
}
};
httpsserver 和HTTP服务器基本上是相同的,就像httpsserver封装的HTTPS。在createserver 案例
(3),继续看第三线app.use()
复制代码代码如下所示:
VaR服务器=出口。服务器功能的HTTP服务器(中间件){
this.stack = { };
middleware.foreach(功能(Fn){)
this.use(FN);
},这个);
http.server.call(这、这。处理);
};
*从服务器原型继承。
* /
服务器。__proto__ = http.server.prototype原型;
连接是从HTTP服务器继承的原型。
通过connect.use(路线、处理)添加中间件的每一条路,这些中间件柄将与路线在堆栈
遍历堆,找到对应于路由的句柄并执行句柄。如果句柄最终调用下一个(),它将继续搜索并执行下一个匹配句柄。
通过封装句柄
(4)最后,请看听(8888)。它是做什么的
简单地说,通过继承底层服务器对象,监听的功能将用于监听特定端口。
服务器。__proto__ = http.server.prototype原型。
以下是所有connect.js源代码。为了节省空间,所有的注释都被删除了,如下所示:
补充:
复制代码代码如下所示:
Fs.readdirSync(__dirname + /中间件)。ForEach(功能(文件名){)
如果((测试文件名)){
变量名= filename.substr(0,filename.lastindexof(' '));
出口。中间件。__definegetter__(名称、函数(){(){
返回所需(/+名称);
});
}
});
然后将中间件对象导出的方法定义为中间件对象,该中间件直接在中间件文件夹中加载js文件模块。
使用:exports.utils.merge(出口、出口。中间件)这句话的中间件方法直接出口。
三,总结:
(1)理解源代码的设计意图有助于最大限度地提高应用程序的收益。
(2)在查看源代码时,了解过程,然后修改语法细节。
(3)巧妙地实现源代码,而不是为设计而设计的过渡设计。
(4)明天继续分析相关中间件,不断更新。