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){});
と思われます。
line 1674 of http.jsからの抽出物。
exports.Server = Server;
exports.createServer = function(requestListener) {
return new Server(requestListener);
};
あなたの元の質問に言及した2つのコードスニペットではそのためだけ真違いは、あなたが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によれば、createServer
がServer
をインスタンス化するだけヘルパーメソッドである、(以下抽出物)nodejsのソースコードに基づいて
http.createServer = function (requestListener) {
var ser = new http.Server();
ser.addListener(requestListener);
return ser;
};
おかげで、私は同じくらいと思いました。読みやすくするために、コード例に 'Server'コンストラクタを追加できますか? – wulfgarpro
@ wulfgar.pro問題はありません、今すぐ追加 – isNaN1247