Sou*_*jee 8 javascript node.js ecmascript-6
我现在看到这种模式用于nodeJS实现,其中我们的模块有以下代码:
class Foo {
  bar() {
    console.log('bar');
  }
}
module.exports = Foo;
然后当我做一个require并最终说new来创建一个类的实例.
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?
在案例1中创建单例模式不是一个好主意,因为我们习惯于在其他语言中使用,如果已经创建了一次,我们将继续提供相同的实例吗?
根据我的这种模式将在每次调用时继续创建类Foo的多个实例.
是的,这就是目的.虽然new Foo();在你的例子中也只执行一次.
这两个表现一样吗?
没有.
第二种模式是否会在我需要的时候继续创建对象并在对象上调用bar?
号码require()呼叫被缓存,每次都返回相同的模块.
是不是创造单身模式是一个好主意?
不,如果单身包含任何状态,单身人士很少是个好主意.您的示例没有,但class在Node.js中使用es通常会执行.