0

我使用 Node.js express 模块已经有一段时间了,从来没有使用过 http 模块来监听端口。

我想知道使用有什么好处:

app = express();
app.listen(app.get('port'));

超过

app = express();
var server = http.createServer(app).listen(app.get('port'));

我的猜测是,这与能够设置 http 设置maxSockets等有关,但是人们这样做还有其他原因吗?

4

2 回答 2

4

来自http://expressjs.com/api.html#app.listen

app.listen()方法只是一种方便的方法。

这是listen定义:

app.listen = function(){
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};

请注意,它将其参数传递给服务器的listen调用,因此您仍然可以设置 http 设置,例如maxSockets.

它还说,“如果您希望使用 HTTPS 或同时提供两者,请使用上述技术。” 上面提到的技术是:

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

因此,不使用的最常见原因之一似乎app.listen是您想要拥有一个 https 服务器。

我想您可能出于某种原因需要对 的返回值的引用http.createServer,在这种情况下您不想使用app.listen.

于 2013-10-30T18:03:01.070 回答
3

express是一个层,connect其上是一个层http

HTTP 接口 APIhttp

http API 来自Node.js。仅提供开箱即用的基本 HTTP 功能。

  • 联网
  • 请求,响应
  • 事件

中间件层connect

Connect是 node 的中间件框架,它允许您编写模块化的 HTTP 应用程序。它提供了一堆开箱即用的中间件

  • 中间件
  • 静态中间件
  • 身体解析器
  • cookie解析器
  • 压缩
  • csrf

网络应用框架express

Express在连接之上提供了一个额外的层,它允许你做更多的事情,并用它实际构建真正的应用程序。最值得注意的是,它为您提供路由。

  • 路由
  • 模板引擎支持
  • 配置
  • 文件上传抽象
于 2013-10-30T18:03:22.103 回答