我正在尝试了解更多express和nodejs内部结构。查看明确的“response.js
文件,它经常为res
分配几种方法,这似乎是原型。
具体而言,res
被声明为res = http.ServerResponse.prototype
。
好的,那么http
是什么? http
被声明为http = require('http')
。
因此,查看明确的“http.js
文件,我们会看到exports = module.exports = HTTPServer;
和HTTPServer
似乎是这种方法:
function HTTPServer(middleware){
connect.HTTPServer.call(this, []);
this.init(middleware);
};
这就是我被困的地方。根据我的逻辑,似乎在ServerResponse
方法上调用HTTPServer
,这当然没有意义。因此,我必须遗漏一些东西。
更新:
我刚才意识到express创建了一个HTTPServer实例:
exports.createServer = function(options){
if ('object' == typeof options) {
return new HTTPSServer(options, Array.prototype.slice.call(arguments, 1));
} else {
return new HTTPServer(Array.prototype.slice.call(arguments));
}
};
所以我猜测实际上是在该实例上调用ServerResponse
的情况?但我仍然无法找到ServerResponse
...
答案 0 :(得分:2)
我在express source files中看不到任何http.js文件。
根据node.js documentation on http http = require('http')
将加载http模块,其中包含ServerResponse
object。
因此,快速代码使用附加方法增强了ServerResponse对象。