【发布时间】:2017-05-23 09:06:33
【问题描述】:
在我使用 nodejs 和 socket.io 的聊天应用程序中,我需要在不同的模块之间共享变量,以便应该从另一个文件访问在一个文件上修改的值。我的应用程序的工作流程如下。
在主 app.js 中,我包含了一个用于验证“users.js”的控制器文件,其中我使用了一个变量,例如 var onlineusers ={};每次登录时,都会将值插入到此变量中。为了处理套接字聊天,我使用了另一个名为 chat.js 的控制器文件,其中我需要使用相同的变量 onlineusers。
现在考虑 3 个文件 app.js,user.js,chat.js
In app.js
var users = require('./users.js');
var chat = require('./chat.js');
users.set(app);
chat.set(app,io);
In user.js
module.exports.set = function(app) {
// var onlineusers modified in some function
}
In chat.js
module.exports.set = function(app,io) {
// var onlineusers modified in some function
}
我需要的是在不同的模块(user.js 和 chat.js)之间共享变量 var onlineusers 值
【问题讨论】:
-
将变量存储在一个模块中并导出一个检索值的方法。然后,您可以从任一模块获取相同变量的值。
-
再查询一个,在线人数增加会不会影响性能。我还需要为房间使用变量
-
不,这不会影响性能,因为在线用户会以任何方式增加。在您的服务器期间加载了一个模块实例。您只是在创建一个访问器函数来获取存储在模块中的一些数据。这是共享数据的一种常见且良好的方式,没有可扩展性方面的缺点。
标签: node.js socket.io global-variables