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。