繁体   English   中英

Node.js全球! 坏蛋,丑陋和性感

[英]Node.js Globals! The Bad, The Ugly & The Perfomance

我在node上还很陌生,尝试学习最佳实践,编写了一个聊天机器人,并且有很多函数和变量被大量重用,因此(至少对我来说)使用全局变量避免重写是有意义的一遍又一遍。

为了避免全局变量的某些问题,我创建了一个名为... 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个全局设置。 这是一个坏主意,我应该只为使用它们的每个文件加载设置,而不是将它们作为全局变量加载吗?

有这么多全局变量或更多全局变量会影响性能,是否有更好的方法来实现我正在尝试的目标?

感谢您抽出宝贵的时间阅读本文,感谢您提供任何反馈意见。

您可以将所有常量保存在单个文件中,从而获得与全局变量相同的结果,此外,还应确保这些常量不会在其他任何地方泄漏。

常量可以只是一个标准文件,可以说constants.js

module.exports = {
  VALUE1: 1,
  VALUE2: 2 //etc
}

您需要的其他任何地方,您只需要以下文件:

const constants = require('./constants.js)
let neededHere = constants.VALUE1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM