Javascript Nodejs:跨多个文件的全局变量
我已经为我的节点服务器跨多个文件编写了代码 如果我有文件,请说basket.js:Javascript Nodejs:跨多个文件的全局变量,javascript,node.js,singleton,Javascript,Node.js,Singleton,我已经为我的节点服务器跨多个文件编写了代码 如果我有文件,请说basket.js: var Basket = { fruits : 0, addFruit : function() { fruits++; }, removeFruit : function() { fruits--; }, printFruit : function() { console.log(this.fruits
var Basket = {
fruits : 0,
addFruit : function() {
fruits++;
},
removeFruit : function() {
fruits--;
},
printFruit : function() {
console.log(this.fruits);
}
}
module.export = Basket;
我还有另一个名为give.js的文件:
var Basket1 = require("./basket.js");
Basket1.addFruit();
Basket1.printFruit();
和另一个名为take.js的文件:
var Basket2 = require("./basket.js");
Basket2.removeFruit();
Basket2.printFruit();
这两个文件会写入同一个Basket实例吗?
换句话说,他们是否都能控制财产、水果?
节点是否自行管理竞争条件?i、 e.如果add和sub同时发出两个修改水果的命令,节点是否知道如何处理
如果我想让两个文件可以同时查看一个单例并访问它,这是一种方式吗??或者是怎样做的?是的,他们将访问同一个对象 模块在第一次加载后被缓存。这意味着(除其他外)每个对require('foo')的调用都将返回完全相同的对象,前提是它将解析为相同的文件 –
否,节点不会自行管理竞争条件,因为竞争条件不会由节点本身引起。节点是单线程的,因此任何代码都不能与其他代码同时执行。请参阅示例以获得更多解释。我是一名初学者,但我认为正确的语法是
模块。导出而不是模块。导出-如果您可以更正,以便人们不会奇怪为什么它不能像我刚才那样工作:)当您尝试它时会发生什么?当我尝试上述代码时,它不起作用。。。每次运行removeFruit或printFruit时,它都会创建一个新的Basket实例……您可能想看看这个。