在 Node.js 中的文件之间共享变量

For*_*ite 1 javascript variables node.js

我想在 node.js 中进行“变量共享”,但我找不到可行的方法来做到这一点。

我的目标是能够更改另一个文件中的变量。例如,我a在主文件中有,但在另一个文件(test.js)中执行某些操作后,a应该更改其在主文件中的值。是否可以实现以及如何实现?

我已经尝试过这段代码,但它似乎不起作用。

main.js

let a = 10;
module.exports.test = a;
console.log(a);
require('./test.js');
console.log(a);
Run Code Online (Sandbox Code Playgroud)

test.js

let b = require('./main.js').test;
b = 15;
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 5

此处给出的其他答案建议使用全局变量,但您应该避免使用全局变量,原因有很多,我不会在这里讨论,但有详细记录。

共享数据的模块化且安全的方法是将其放入一个对象中(作为对象的属性),然后从一个模块导出该对象并将其导入到想要访问它的任何其他模块中。由于导出的对象是真正共享的,因此对该对象上的任何属性的任何更新都将立即可供引用同一对象的所有其他人使用。

shared-data.js

module.exports = {a: 10};
Run Code Online (Sandbox Code Playgroud)

test.js

let obj = require('./shared-data.js');
++obj.a;
Run Code Online (Sandbox Code Playgroud)

main.js

let obj = require('./shared-data.js');
console.log("main1: ", obj.a);
++obj.a;
console.log("main2: ", obj.a);

require('./test.js');
console.log("main3: ", obj.a);
Run Code Online (Sandbox Code Playgroud)

这将输出:

main1: 10
main2: 11
main3: 12
Run Code Online (Sandbox Code Playgroud)

因为test.js正在操作shared-data.js导出的共享数据