ES6类和module.exports

我现在看到了这个模式的nodeJS实现,在我们的模块中有以下代码:

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

然后,当我做一个需求,并最终说新的创build类的一个实例。

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

根据我的这种模式,将会继续创buildFoo类的多个实例,每次调用时都会这样。

另一种模式可能是我习惯了在我的foo.js中的位置。

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

然后我只需要和打电话给酒吧。

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

问题是这两个行为是一样的吗? 第二种模式是否会在我需要的时候继续创build对象,并在对象上调用bar?

如果我们已经习惯了其他语言,在case 1中不是创buildsingleton模式的一个好主意,如果它已经被创build一次,我们继续服务于同一个实例吗?

根据我的这种模式,将会继续创buildFoo类的多个实例,每次调用时都会这样。

是的,这是目的。 虽然new Foo(); 在你的例子中只执行一次。

这两个行为是否一样?

没有。

第二种模式是否会在我需要的时候继续创build对象,并在对象上调用bar?

号码的require()调用被caching,每次都返回相同的模块。

是不是创build单身模式一个好主意?

不,一个单身人士如果包含任何状态,也不是一个好主意。 你的例子没有,但是在Node.js中通常使用class es。