在NodeJS中需要做什么('表达')()

时间:2017-06-06 08:07:59

标签: node.js express

据我了解,require('express')()没有创建服务器,它只是将功能捆绑在一起。但如果是这样,以下代码如何在没有服务器的情况下运行?

const express = require('express')
const app = express()

app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

此外,如果确实创建了服务器,为什么我需要导入http模块并在以下示例中手动创建服务器?

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  console.log('a user connected');
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

我很困惑。提前谢谢。

2 个答案:

答案 0 :(得分:6)

require('express')()创建Express应用程序的实例。

它的简称:

var express = require('express');
var app     = express();

如果您要创建HTTP服务器,则不需要明确使用http,因为如果您致电app.listen(),Express会为您创建一个。

如果您需要该服务器用于其他内容,例如,要附加socket.io实例,您可以使用:

var express = require('express');
var app     = express();
var server  = app.listen(3000, ...); // returns an `http.Server` instance
var io      = require('socket.io')(server);

答案 1 :(得分:0)

基本上当你执行require('express')时,它会导入一个函数。以下()也会调用该函数。基本上它实例化一个快速应用程序。