2016-09-16 46 views
8

我看到這種模式,這些天實施的NodeJS,在那裏我們有我的模塊下面的代碼:ES6類和module.exports

class Foo { 
    bar() { 
    console.log('bar'); 
    } 
} 
module.exports = Foo; 

然後當我做了要求,最後說,新的創造類的一個實例。

var Foo = require(./foo); 
var myFoo = new Foo(); 
myFoo.bar(); 

根據我的這種模式將不斷創建類Foo的多個實例,每次調用它。

其他模式可能是什麼,我用我的foo.js會在哪裏。

module.exports = { 
    bar: function() { 
    console.log('bar'); 
    } 
}; 

然後我只需要和打電話給酒吧。

var foo = require(./foo); 
foo.bar(); 

問題會這兩個表現相同嗎?第二種模式是否會在我需要的時候繼續創建對象並在對象上調用bar?

,因爲我們在其他語言中使用也沒有創造Singleton模式的情況下,1個好主意,其中我們繼續,如果它已經創建一次服務於同一個實例?

+0

您正在使用ES6,所以請確定,很少有瀏覽器支持此功能。 –

+0

目的是在nodeJS中運行,而不是在瀏覽器中運行。 –

回答

8

根據我的這種模式將不斷創建Foo類的多個實例,每當它被調用時。

是的,這就是目的。雖然new Foo();只在您的示例中執行一次。

將兩個相同的行爲?

將在第二圖案保持創建對象每次我需要和對象上調用吧?

編號require()調用被緩存,它們每次都返回相同的模塊。

也沒有創造單例模式是一個好主意?

不,如果它包含任何狀態,單身很少是個好主意。你的例子沒有,但是他們通常在Node.js中使用class es。