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

标签 javascript node.js

有什么区别:

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

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

最佳答案

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

摘自 line 1674 of http.js .

exports.Server = Server;


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

因此,您在原始问题中提到的两个代码片段的唯一true 区别在于您没有使用 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);

关于javascript - Node.js 的 http.Server 和 http.createServer,有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857747/

相关文章:

node.js - Meteor.js 和 LDAP

javascript - npm run watch 终端错误, "did you forget to signal async completion",有人可以回答吗?

javascript - 插入到数组的隐藏字段数组

javascript - 移除特征数组 (OpenLayers 4)

javascript - Node JS - 文件生成器架构

node.js - 有没有办法根据 package.json 的更改来更新特定的依赖项?

javascript - 如何在图像上添加可编辑的文本字段?

javascript - 使用 div.style.display "block": "none" to hide/unhide based on 2 checkboxes

javascript - JQuery 表排序器不适用于日期范围字符串

javascript - 如何在 JavaScript 中使用异步生成器?