节点http和表达听力差异

Chr*_*ava 5 http listen node.js express

我是节点和表达新手.我遇到过两种方法来创建一个侦听特定TCP端口的快速应用程序,据我所知,它可以产生相同的结果.如果有任何问题,有人可以对这些有所不同吗?这是功能

方法1 - 仅使用快速模块:

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'));
});
Run Code Online (Sandbox Code Playgroud)

方法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'));
});
Run Code Online (Sandbox Code Playgroud)

dyl*_*nts 9

看一下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);
};
Run Code Online (Sandbox Code Playgroud)

这只是一种方便的方法,用于执行上面"方法2"中定义的操作.(如果您需要复习,以下是apply()有效的方法.)

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