首页 > 解决方案 > 如何在 NodeJS 中创建 True Singleton 而不依赖其缓存系统

问题描述

有时实际需要单例,而 Node 的缓存系统并不可靠。甚至官方文档也提到了它:

模块根据其解析的文件名进行缓存。由于模块可能会根据调用模块的位置(从 node_modules 文件夹加载)解析为不同的文件名,因此不能保证 require('foo') 将始终返回完全相同的对象,如果它会解析为不同的文件.

来源:https ://nodejs.org/api/modules.html#modules_module_caching_caveats


如何在不依赖 Node 缓存的情况下创建 Singleton?甚至可能吗?

标签: javascriptnode.js

解决方案


您误解了文档。这意味着如果您的文件结构是:

 /foo.js
 /bar.js
 /sub/foo.js
 /sub/bar.js

然后require("foo")bar.js文件内部将导入不同的模块(/foo.js/sub/foo.js)。

NodeJS 的缓存系统可靠的。


推荐阅读