Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在node.js中创建单例模块?_Node.js_Singleton - Fatal编程技术网

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

如何在node.js中创建单例模块?,node.js,singleton,Node.js,Singleton,我正在尝试创建一个模块,它在网络上执行一些工作,但也缓存最近的结果,以减少它访问的资源的利用率。我的想法是创建一个模块,在需要的地方需要它。然而,在旧版本的node中,这被明确地称为不起作用,因为require仅在解析为相同路径时缓存其参数 随着node的更新版本在节点模块下创建平面结构,我认为这不再是事实。然而,我仍然看到更多关于单身的文章,这些文章主张通过以下方式创建单身: 如果您想创建行为类似于单例的东西,您可以 在您的模块中通常可能会执行以下操作: var HelloWorld = (f

我正在尝试创建一个模块,它在网络上执行一些工作,但也缓存最近的结果,以减少它访问的资源的利用率。我的想法是创建一个模块,在需要的地方需要它。然而,在旧版本的node中,这被明确地称为不起作用,因为
require
仅在解析为相同路径时缓存其参数

随着node的更新版本在
节点模块下创建平面结构,我认为这不再是事实。然而,我仍然看到更多关于单身的文章,这些文章主张通过以下方式创建单身:

如果您想创建行为类似于单例的东西,您可以 在您的模块中通常可能会执行以下操作:

var HelloWorld =
(function () {   
    this.greeting = “Hello, World”;
    return this; 
 })();
module.exports = HelloWorld; 
这意味着如果您加载 在应用程序中多次使用模块,即使是在不同的文件中, HelloWorld只会被调用一次;以及HelloWorld的所有实例 将指向同一对象

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

第二,如果使用一个足够新的npm版本,使用一个扁平的安装结构,这样的事情是必要的吗