Node.js的http.Server和http.createServer有什么区别?

有什么区别:

http.Server(function(req,res){});

http.createServer(function(req,res){});

       

网上收集的解决方案 "Node.js的http.Server和http.createServer有什么区别?"

基于nodejs的源代码(下面摘录), createServer只是实例化Server一个辅助方法。

从http.js的第1674行提取。

 exports.Server = Server; exports.createServer = function(requestListener) { return new Server(requestListener); }; 

因此,您在原始问题中提到的两个代码片段中唯一真正的区别是您没有使用new关键字。


为了清楚起见, Server构造函数如下(在2012-12-13之后):

 function Server(requestListener) { if (!(this instanceof Server)) return new Server(requestListener); net.Server.call(this, { allowHalfOpen: true }); if (requestListener) { this.addListener('request', requestListener); } // Similar option to this. Too lazy to write my own docs. // http://www.squid-cache.org/Doc/config/half_closed_clients/ // http://wiki.squid-cache.org/SquidFaq/InnerWorkings#What_is_a_half-closed_filedescriptor.3F this.httpAllowHalfOpen = false; this.addListener('connection', connectionListener); this.addListener('clientError', function(err, conn) { conn.destroy(err); }); } util.inherits(Server, net.Server); 

根据文件 ,似乎是

 http.createServer = function (requestListener) { var ser = new http.Server(); ser.addListener(requestListener); return ser; };