Javascript 在兔子洞下面-哪里有“兔子洞”;res";源于express和/或nodejs?
我试图了解更多的express和nodejs的内部结构。查看express'Javascript 在兔子洞下面-哪里有“兔子洞”;res";源于express和/或nodejs?,javascript,node.js,express,Javascript,Node.js,Express,我试图了解更多的express和nodejs的内部结构。查看express'response.js文件,它经常为res分配几个方法,这似乎是一个原型 具体来说,res声明为res=http.ServerResponse.prototype 好的,那么什么是httphttp声明为http=require('http') 因此,在express'http.js文件中,我们可以看到exports=module.exports=HTTPServer 而HTTPServer似乎就是这种方法: functi
response.js
文件,它经常为res
分配几个方法,这似乎是一个原型
具体来说,res
声明为res=http.ServerResponse.prototype
好的,那么什么是http
http
声明为http=require('http')
因此,在express'http.js
文件中,我们可以看到exports=module.exports=HTTPServer代码>
而HTTPServer
似乎就是这种方法:
function HTTPServer(middleware){
connect.HTTPServer.call(this, []);
this.init(middleware);
};
这就是我被卡住的地方。根据我的逻辑,似乎在HTTPServer
方法上调用了ServerResponse
,这当然没有意义。因此,我一定错过了什么
更新:
我刚刚意识到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
…我在中看不到任何http.js文件
根据http=require('http')
将加载http模块,该模块具有
因此,express代码使用附加方法增强了ServerResponse对象。ahhh你说得对。。。忘记了,因为它不是require('./http')
它加载默认模块。。。虽然我的应用程序在express文件夹中有一个http.js。。。奇怪的