Javascript 在兔子洞下面-哪里有“兔子洞”;res";源于express和/或nodejs?

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

我试图了解更多的express和nodejs的内部结构。查看express'
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。。。奇怪的