如何在node.js中创建单例模块?
我正在尝试创建一个模块,它在网络上执行一些工作,但也缓存最近的结果,以减少它访问的资源的利用率。我的想法是创建一个模块,在需要的地方需要它。然而,在旧版本的node中,这被明确地称为不起作用,因为如何在node.js中创建单例模块?,node.js,singleton,Node.js,Singleton,我正在尝试创建一个模块,它在网络上执行一些工作,但也缓存最近的结果,以减少它访问的资源的利用率。我的想法是创建一个模块,在需要的地方需要它。然而,在旧版本的node中,这被明确地称为不起作用,因为require仅在解析为相同路径时缓存其参数 随着node的更新版本在节点模块下创建平面结构,我认为这不再是事实。然而,我仍然看到更多关于单身的文章,这些文章主张通过以下方式创建单身: 如果您想创建行为类似于单例的东西,您可以 在您的模块中通常可能会执行以下操作: var HelloWorld = (f
require
仅在解析为相同路径时缓存其参数
随着node的更新版本在节点模块下创建平面结构,我认为这不再是事实。然而,我仍然看到更多关于单身的文章,这些文章主张通过以下方式创建单身:
如果您想创建行为类似于单例的东西,您可以
在您的模块中通常可能会执行以下操作:
var HelloWorld =
(function () {
this.greeting = “Hello, World”;
return this;
})();
module.exports = HelloWorld;
这意味着如果您加载
在应用程序中多次使用模块,即使是在不同的文件中,
HelloWorld只会被调用一次;以及HelloWorld的所有实例
将指向同一对象
首先,我不明白为什么这是真的:如果你从两个不同的目录加载这个模块,为什么HellowWorld只会被调用一次?它不是从加载的模块的每个不同实例调用一次吗
第二,如果使用一个足够新的npm版本,使用一个扁平的安装结构,这样的事情是必要的吗