我一直在使用Node.js express模块一段时间,而没有使用http模块来监听端口。
我想知道使用有什么好处:
app = express();
app.listen(app.get('port'));
在
app = express();
var server = http.createServer(app).listen(app.get('port'));
我的猜测是,这与设置maxSockets
等http设置有关,但有没有其他原因让人这样做?
答案 0 :(得分: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
来电,因此您仍然可以设置maxSockets
之类的http设置。
它还说,“如果您希望使用HTTPS或同时提供这两种技术,请使用上述技术。”它上面提到的技术是:
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
因此,如果您想拥有https服务器,似乎不使用app.listen
的最常见原因之一就是。
我想您可能因某种原因需要引用http.createServer
的返回值,在这种情况下,您不希望使用app.listen
。
答案 1 :(得分:3)
express
是connect
之上的一个图层,它是http
之上的图层。
http
http API来自Node。仅提供基本的HTTP功能。
connect
Connect是节点的中间件框架,允许您编写模块化HTTP应用程序。它提供了一堆开箱即用的中间件
express
Express在connect之上提供了一个额外的层,它允许你做更多的事情,并实际上用它构建真正的应用程序。最值得注意的是,它为您提供路由。