Javascript / NodeJS / Express范围混乱

我正在浏览这个存储库,注意到作者已经在app.js中声明了一个variables(io):

/* Socket.io Communication */ var io = require('socket.io').listen(server); io.sockets.on('connection', socket); 

他在public / js / app.js中再次引用该variables,但似乎并没有像我通常所期望的那样引用外部JavaScript文件,所以我很惊讶这不会导致ReferenceError。

有人可以请澄清这个例子是什么让这个外部参考io工作? 提前谢谢了。

public / js / app.js是客户端JavaScript,并将在浏览器中运行。 如果你看一下index.html ,你会看到socket.io的客户端版本被包含在底部,它定义了一个全局io var。

https://github.com/DanialK/ReactJS-Realtime-Chat/blob/master/public/index.html#L12