你怎么看这个?它保留了 A 的两个单独副本,这对我的家庭供暖控制器不健康。控制器逻辑将在模块A 和模块B 中的http 服务器接口中运行,它们需要共享属性。我只想要一个属性实例。在 main 和 moduleB 中创建的实例似乎是相同的实例,但与在 moduleA 中的不同。下面是一些测试代码。
运行 main.js 的输出---->
pi@raspberrypi:~/controller $ node main.js
Initializing A by calling control.initializeA(10)....
Show via control.A = -1
Show via control.showA() = 10
Show via server.showA() = -1
Initializing A from Main by control.A = 3
Show via control.A = 3
Show via control.showA() = 10
Show via server.showA() = 3
Initializing A from moduleB by server.initializeA(5)
Show via control.A = 5
Show via control.showA() = 10
Show via server.showA() = 5
模块A.js
module.exports = {
A: -1,
initializeA: (value) => {
this.A = value;
},
showA: () => {
return this.A;
}
}
模块B.js
let control = require("./moduleA");
exports.showA = () => {
return control.A;
}
exports.initializeA = (value) => {
control.A = value;
}
主.js:
let control = require("./moduleA");
let server = require("./moduleB");
console.log("Initializing A by calling control.initializeA(10)....");
control.initializeA(10);
show();
console.log("\nInitializing A from Main by control.A = 3");
control.A = 3;
show();
console.log("\nInitializing A from moduleB by server.initializeA(5)");
server.initializeA(5);
show();
function show(){
console.log("Show via control.A = " + control.A);
console.log("Show via control.showA() = " + control.showA());
console.log("Show via server.showA() = " + server.showA());
}