我已经为我的节点服务器编写了几个文件的代码。
如果我有一个文件,请说一下basket.js:
var Basket = {
fruits : 0,
addFruit : function() {
fruits++;
},
removeFruit : function() {
fruits--;
},
printFruit : function() {
console.log(this.fruits);
}
}
modules.export = Basket;
我还有一个名为give.js的文件:
var Basket1 = require("./basket.js");
Basket1.addFruit();
Basket1.printFruit();
另一个名为take.js的文件:
var Basket2 = require("./basket.js");
Basket2.removeFruit();
Basket2.printFruit();
两个文件都会写入同一个篮子的实例吗? 换句话说,他们是否都能控制财产,水果? 节点是否自行管理竞争条件?即如果修改水果的两个命令同时从add和sub进入,节点是否知道如何处理它?</ p>
如果我想让两个文件可以同时查看单个单元并访问它,那么这是一种方法吗?或者其他人如何做到这一点?
答案 0 :(得分:4)
是的,他们将访问同一个对象。
模块在第一次加载后进行缓存。这意味着(除其他外)每次调用require('foo')将获得完全相同的返回对象,如果它将解析为同一个文件。
不,节点本身不管理竞争条件,因为竞争条件不会由节点本身引起。节点是单线程的,因此没有代码可以与其他代码同时执行。有关更多解释,请参阅示例this answer。
答案 1 :(得分:0)
我是初学者,但我认为正确的语法是module.exports
而不是modules.export
- 如果你可以纠正,那么人们就不会想知道为什么它不能像我刚才那样工作:)< / p>