2011-12-05 74 views
3

我一個CMS系統的Node.js上的工作,我對那些Node.js的一個簡單的問題Pro的Node.js的訪問主模塊

我創建模塊和這些模塊中需要的模塊,但如果我已經將此模塊包含在父模塊中,我可以訪問那些必需的模塊嗎?

例如:

main.js 
    var fs = require('fs'); 
    var sc = require('second.js'); 


second.js 
    var fs = require('fs'); // Is there any way to use the parent modules fs object? 

這似乎只是我,包括相同的模塊在我的一些子模塊,而這樣做,如果可能的。

謝謝!

回答

6

它應該沒有問題,因爲節點首次包含模塊時會緩存模塊(即需要模塊的副作用將不會再次執行)。您可以通過篡改require.cache來強制清除緩存(並因此重新執行所述副作用)。

+0

我讀過,但似乎是多餘的。但是,如果沒有缺點,那麼我會繼續重新包括它們。 –

+0

我認爲這是模塊化系統的方法,因爲每個模塊都有明確的「輸入」(需求和功能參數)和「輸出」(輸出)。 –

10

如果你來到這裏尋找一種簡單的方式來獲得當前模塊的父模塊,這裏是這樣做的一種方式:

var parent = module.parent.exports; 

模塊對象存儲相當多的有用信息,包括加載它的父模塊的引用。你也可以這樣做:

var parent = module.require(module.parent.id); 
+9

可能值得注意的是,'module.parent'是指首先加載該模塊的父代,而不是該特定實例中的父代。 –