文件模块知道全局变量?

时间:2012-02-08 17:29:55

标签: node.js

Node.js中的文件模块是否知道全局变量?如果没有,我如何获得我想要加载的文件模块的变量?例如,现在我有一个运行3台服务器的脚本。一个用于游戏大厅,一个用于套接字路由器,一个用于管理。我想将服务器分成单独的文件模块。问题是,套接字路由器需要访问游戏大厅,游戏大厅和管理模块需要访问套接字路由器。这可能吗?

1 个答案:

答案 0 :(得分:2)

不是 - 文件/模块中定义的变量是模块的本地变量。

您可以创建一个导出所需服务器变量的公共模块,并在每个服务器中需要该模块,但更好的方法可能是使用Dependency Injection ......

每个服务器都需要有一种方法来接收它的相关参数(在这种情况下,通过导出“start”函数及其所需服务器的参数)。在启动时,主服务器“注入”对其他服务器的引用。

var socketRouter = require('./socketRouter.js');
var gameLobby = require('./gameLobby.js');
var admin = require('./admin.js');
socketRouter.start(gameLobby);
gameLobby.start(socketRouter);
admin.start(socketRouter);