2015-03-03 51 views
3

在nodejs模塊中是單身人士。我創建了一個獲取配置對象並返回一些對象的模塊。但最後,我將擁有模塊的單個實例。 ?如何對不同配置多個實例(每次需要的時候,它應該是不同的情況下如何實現這一目標?)如何在node.js中獲取模塊的多個實例?

回答

7

出口構造並沒有隱含的狀態:

您當前的代碼看起來是這樣的:

module.exports = { ..}; // some object 

而是導出一個構造函數:

module.exports = function(){ 
    // initialize module here, no global variables 
    return { .. }; 
}; 
+0

在您的.js文件中定義的所有變量我認爲基於Node.js的工作方式是不是全局性的,因爲在節點模塊中沒有全局變量,所以沒有全局變量在這裏沒有意義。即使你已經在模塊外定義了變量,它們也不是全局的.export甚至 – PositiveGuy 2015-11-30 09:03:36

+0

爲什麼你要返回對象?我嘗試過,但在需要該模塊的代碼中,它無法訪問我放入該對象的任何屬性。 – PositiveGuy 2015-11-30 09:07:15

+0

@WeDoTDD確保出口是全球性的,它們在模塊的所有「需求」中都是全球性的。 'module.exports =「foo」'表示我可以'require(「./ myModule」)'並在任何地方訪問導出。至於返回對象 - 你必須調用模塊作爲一個函數 - 就像你通常調用的構造函數:var fooBuilder = require(「foo」); var foo = fooBuilder()'或者更簡潔'var foo = require(「foo」)()' - 這個模式在express中很常見。 – 2015-11-30 09:19:34

3

僅返回構造,並有對單身的專用模塊:

的lib/user.js的:

module.exports = function() { ... } 

的lib/currentUser.js:

module.exports = new (require('./user'))(); 
0

我創建了一個模塊與特定的目的,除了提供增加和獲取您可以定義默認您構建的項目的參數。 檢查出here

相關問題