2012-02-08 108 views
1

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

回答

2

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

您可以创建一个出口所需的服务器变量的通用模块,并且需要在每个服务器模块,但更好的方法是使用Dependency Injection ...

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

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

是的,这就是我不得不做的。 – LordZardeck 2012-02-08 20:13:10