在Node.js文件之间共享variables?

这里有两个文件:

// main.js require('./modules'); console.log(name); // prints "foobar" // module.js name = "foobar"; 

当我没有“变种”它的作品。 但是当我有:

 // module.js var name = "foobar"; 

名称将在main.js中未定义

我听说全局variables是不好的,你最好在引用之前使用“var”。 但是,这是全球variables好吗?

全局variables几乎从来都不是一件好事(也许是一个例外,或者两个例外……)。 在这种情况下,看起来你只是想导出你的“名称”variables。 例如,

 // module.js var name = "foobar"; // export it exports.name = name; 

然后,在main.js中…

 //main.js // get a reference to your required module var myModule = require('./module'); // name is a member of myModule due to the export above var name = myModule.name; 

如果我们需要共享多个variables,请使用以下格式

 //module.js let name='foobar'; let city='xyz'; let company='companyName'; module.exports={ name, city, company } 

用法

  // main.js require('./modules'); console.log(name); // print 'foobar' 

使用或不使用var关键字的variables被附加到全局对象。 这是通过声明不带var关键字的variables在Node中创build全局variables的基础。 而使用var关键字声明的variables仍然是本地模块。

看到这篇文章进一步了解 – https://www.hacksparrow.com/global-variables-in-node-js.html

要在模块之间共享variables,可以使用函数来获取主模块和模块之间的variables值。

 //myModule.js var mainFunction = null; //You can also put function reference in a Object or Array function functionProxy(func){ mainFunction = func; //Save the function reference } // --- Usage --- // setTimeout(function(){ // console.log(mainFunction('myString')); // console.log(mainFunction('myNumber')); // }, 3000); module.exports = { functionProxy:functionProxy } 

 //main.js var myModule = require('./myModule.js'); var myString = "heyy"; var myNumber = 12345; function internalVariable(select){ if(select=='myString') return myString; else if(select=='myNumber') return myNumber; else return null; } myModule.functionProxy(internalVariable); // --- If you like to be able to set the variable too --- // function internalVariable(select, set){ // if(select=='myString'){ // if(set!=undefined) myString = set; // else return myString; // } // else if(select=='myNumber'){ // if(set!=undefined) myNumber = set; // else return myNumber; // } // else return null; // } 

你总是可以从main.js得到值,即使值已经改变了。