节点新手 - require的目的('express')

时间:2015-02-21 17:44:36

标签: node.js express socket.io

在下面的简单socketIo服务器中,任何节点忍者都可以解释第一行的目的。我没有使用express来实际创建基于http的服务器,所以它可以正常工作吗? 有点困惑......

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


server.listen(8080);

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

io.on('connection', function (socket) {

  console.log('connection '+socket);
    socket.on("data",function(d){console.log('data from flash: ',d);});
  socket.emit("message","hello from server");
  socket.emit('news', { hello: 'world' });
  socket.on('disconnect', function (data) {
    console.log(' disconnect');
  });
});

1 个答案:

答案 0 :(得分:1)

该行:

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

加载express模块(require(...)执行的操作),然后调用其构造函数对其进行初始化,然后将结果分配给名为app的变量。然后,您的代码会在其他几个地方使用app变量。

这些步骤是使用express模块所必需的。

注意您的代码然后如何将app(由Express创建)传递到您的http服务器。这个钩子作为请求监听器表达到您的http服务器中,以便它可以提供您随后使用app.get(...)的路由功能。

如果删除第一行,则代码根本不起作用。

您可以在不使用Express的情况下创建一个vanilla HTTP服务器,但是您必须编写自己的requestListeners,并且无法使用Express的许多其他路由和中间件功能。