在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
得到值,即使值已经改变了。