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

有什么区别:

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

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

解决方法

根据nodejs的源代码(下面的解析),createServer只是一个帮助程序来实例化一个服务器.

摘自line 1674 of http.js.

exports.Server = Server;


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

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

为了清楚起见,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);

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...