有什麼區別:Node.js的http.Server和http.createServer有什麼區別?
http.Server(function(req,res){});
和
http.createServer(功能(REQ,RES){});
有什麼區別:Node.js的http.Server和http.createServer有什麼區別?
http.Server(function(req,res){});
和
http.createServer(功能(REQ,RES){});
基於的NodeJS(下面提取)的源代碼,createServer
僅僅是一個輔助方法來實例化一個Server
。
從line 1674 of http.js中提取。
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);
根據the docs,這似乎是
http.createServer = function (requestListener) {
var ser = new http.Server();
ser.addListener(requestListener);
return ser;
};
謝謝,我想盡可能多。爲了可讀性,你可以在你的代碼示例中添加'Server'構造函數嗎? – wulfgarpro
@ wulfgar.pro沒問題,現在補充 – isNaN1247