我在节点上很新,并且尝试学习最佳实践,编写聊天机器人以及相当多的重复使用的函数和变量,因此使用全局变量是有意义的(至少对我而言)避免一遍又一遍地重写同样的东西。
为了避免全局变量的一些问题,我创建了一个名为... globals.js的文件,其中包含所有全局变量,如果它们都在同一个地方,就不容易出错。
//globals.js
const Settings = require('./settings.js) // DB Model
...
// A few variables
global.foo = bar;
...
// I expect to have about 10-20 functions
global.baz = function(foo,bar) {
...
}
// Prepare and Load Settings
Settings.find(
function(err, result) {
if (err) {
console.log('Unable to load settings: ' + err);
process.exit(1);
} else {
for (let key in result[0].toObject()) {
// All settings will be available globbaly
global[key] = result[0][key];
}
}
}
);
这些设置必须可用于整个项目,因为不同的文件将使用大部分文件,我希望有超过50个可配置的设置,至少50个全局变量。这是一个坏主意,我应该只为每个使用它们的文件加载设置而不是将它们加载为全局变量?
如果有这么多全局或更多影响性能,是否有更好的方法来实现我的尝试?
感谢您花时间阅读本文,感谢任何反馈。
答案 0 :(得分:3)
您可以将所有常量保存在单个文件中,获得与全局变量相同的结果,此外,您将确保这些常量不会泄露到其他地方。
常量可能只是一个标准文件,比方说 constants.js :
module.exports = {
VALUE1: 1,
VALUE2: 2 //etc
}
在其他需要的地方,你只需要这个文件:
const constants = require('./constants.js)
let neededHere = constants.VALUE1