如何在node.js中创建单例模块?

时间:2017-08-07 23:04:03

标签: node.js singleton

我正在尝试创建一个在网络上工作的模块,但也会缓存最近的结果,以减少它访问的资源的利用率。我的想法只是创建一个模块,并在需要的地方需要它。但是,在较旧版本的节点中,显然认为这不起作用,因为require仅在它解析为相同路径时才缓存其参数。

对于在node-modules下创建扁平结构的较新版本的节点,我认为这不再是真的。但是,我仍然看到最近有关单身人士的文章,主张通过different method创建一个单身人士:

  

如果你想创造一个像单身人士一样的东西,你   通常可能会在您的模块中执行类似的操作:

var HelloWorld =
(function () {   
    this.greeting = “Hello, World”;
    return this; 
 })();
module.exports = HelloWorld; 
     

这意味着如果你加载了   模块在您的应用程序中多次,即使在不同的文件中,   HelloWorld只会被调用一次;以及HelloWorld的所有实例   将指向同一个对象。

首先,我不明白为什么会出现这种情况:如果你从两个不同的目录加载这个模块,为什么HellowWorld只会被调用一次?是否会从加载的模块的每个不同实例调用一次?

其次,如果使用一个使用扁平安装结构的足够新版本的npm,这样的话甚至是必要的吗?

0 个答案:

没有答案