0
我已經閱讀無處不在,module.exports被緩存並在第一次調用後每次需要時返回相同的對象。 這裏是我的代碼 -
index.js
module.export緩存如何在節點中工作
var http= require('http');
var Customer= require('./code/Customer');
var Wishlist= require('./code/Wishlist');
var server= http.createServer(function(req,res){
console.log("Request received");
res.end("Request received");
});
server.listen(3000,function(){
console.log("hello");
});
customer.js
var emitter= require('../../lib/EventDispatcher')();
emitter.on('wishlist',function(){
console.log("Listened to wishlist event");
});
module.exports= function(){
console.log("Inside customer");
}
Wishlist.js
var emitter= require('../../lib/EventDispatcher')();
module.exports= function(){
console.log("Inside customer");
emitter.emit('wishlist');
}
EventDispatcher.js
var emitter= require('events').EventEmitter;
module.exports= function() {
console.log("created");
return new emitter();
}
如果我的eventDispatcher被緩存,那麼wishlist發出的事件應該被客戶捕獲。但沒有發生。
我正在嘗試爲觀察者創建一個主幹,以便每個模塊都可以自己偵聽事件。是否它是正確的方法?
我希望有一個全球eventEmitter對象,這樣以後當我添加新的模塊,就應該能夠觀察到觸發的事件其他模塊。有沒有其他方法可以做到這一點?我只是想,如果導出將被緩存,那麼所有模塊將獲得相同的eventEmitter對象。我想出的一種方法是在索引文件中創建一個eventEmitter,並將其注入構造函數中的每個模塊中。但是這似乎是高度耦合的。如果我錯了,請原諒我。 –
@KrrishRaj - 如果您想要一個共享的發射器對象,請參閱我的答案。 – jfriend00