我试图了解更多的 express 和 nodejs 内部结构。查看 expressresponse.js
文件,它经常为 分配几个方法res
,这似乎是一个原型。
具体来说,res
被声明为res = http.ServerResponse.prototype
。
好的,那是http
什么?http
被声明为http = require('http')
。
所以查看 expresshttp.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
...