javascript - 如何在 NodeJS 中创建 True Singleton 而不依赖其缓存系统
问题描述
有时实际需要单例,而 Node 的缓存系统并不可靠。甚至官方文档也提到了它:
模块根据其解析的文件名进行缓存。由于模块可能会根据调用模块的位置(从 node_modules 文件夹加载)解析为不同的文件名,因此不能保证 require('foo') 将始终返回完全相同的对象,如果它会解析为不同的文件.
来源:https ://nodejs.org/api/modules.html#modules_module_caching_caveats
如何在不依赖 Node 缓存的情况下创建 Singleton?甚至可能吗?
解决方案
您误解了文档。这意味着如果您的文件结构是:
/foo.js
/bar.js
/sub/foo.js
/sub/bar.js
然后require("foo")
在bar.js
文件内部将导入不同的模块(/foo.js
和/sub/foo.js
)。
NodeJS 的缓存系统是可靠的。
推荐阅读
- shell - shell 命令在框架中输出,而不是拆分活动窗口
- docker - Kubernetes + Gitlab CI artefacts:我应该使用什么样的卷?
- c# - C# SQL 数据适配器以错误的顺序插入行。DataAdapter.Update()
- html - 画布如何在特定位置放大?
- linux - 网络错误:AWS EC2 实例中的连接被拒绝
- c# - 是否可以在没有设置器的情况下在属性中设置值?
- python - 在 while 循环中复制到 Postgres
- python - Pygame 碰撞检测无法正常工作
- c++ - 重载运算符 - 无法在赋值中将对象转换为基类型
- c# - C# - 存储变量和用户设置(变量和设置的数量未预定义)