node.js - node http 和 express 监听区别

标签 node.js http express listen

我是 node 和 express 的新手。我遇到过两种创建在特定 TCP 端口上监听的快速应用程序的方法,据我所知,这会产生相同的结果。有人可以阐明这些差异吗,如果有的话......这是listen功能

方法 1 - 仅使用 express 模块:

var express = require('express');

var port = 8080;
var app = express();
app.set('port', port);
...
// different listen method
app.listen(app.get('port'), function(){ 
  console.log('now listening on port ' + app.get('port'));
});

方法 2 - 使用 express 和 http 模块:

var http = require('http'), 
    express = require('express');

var port = 8080;
var app = express();
app.set('port', port);
...
// different listen method
http.createServer(app).listen(app.get('port'), function(){ 
  console.log('now listening on port ' + app.get('port'));
});

最佳答案

看一下express源码中app.listen的定义:https://github.com/visionmedia/express/blob/9e6b881f8566f26f2d2ea017657455ec7c674ad6/lib/application.js#L524-L548

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

这只是一种方便的方法,用于执行您在上面“方法 2”中定义的操作。 ( Here's how apply() works if you need a refresher .)

所以,他们做同样的事情:)

关于node.js - node http 和 express 监听区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045318/

相关文章:

node.js - 从源代码安装 nodejs,现在出错

java - @ResponseBody 注解在响应中重置 header

node.js - 如何从我的 Express API 中的 mysql blob 字段的缓冲区返回字符串?

javascript - 异步 mongodb 更新循环中最后一次迭代后的重定向

node.js - 除非作为参数传入,否则无法添加快速路线

javascript - Node JS 返回对象,如何检查里面有什么

node.js - Ember-cli 插件读取配置

ruby-on-rails - HTTParty 在查询字符串中向 % 添加 25

node.js - Google Cloud PubSub - 似乎无法获取主题

HTTP Keep-Alive header