Node.js模块缓存能否用于创建全局可访问的单例?

Node.js模块缓存能否用于创建全局可访问的单例?,node.js,dependencies,mongoose,Node.js,Dependencies,Mongoose,在将我的项目分成许多OO类之后,我必须通过多个构造函数传递对我的模型实例(包含Mongoose模型和模式)的引用 在Model.js模块中创建Model类的实例,然后在我需要它的任何地方都需要这个Model.js模块,这会是一种不好的做法吗 大概是这样的: Model = function () { ... } module.exports = new Model(); 这将依赖于节点来允许相同的模型实例在文件之间共享,就像拥有一个全局单例一样 或者我应该通过构造函数显式地传递依赖项吗?不,

在将我的项目分成许多OO类之后,我必须通过多个构造函数传递对我的
模型
实例(包含Mongoose模型和模式)的引用

Model.js
模块中创建
Model
类的实例,然后在我需要它的任何地方都需要这个
Model.js
模块,这会是一种不好的做法吗

大概是这样的:

Model = function () { ... }

module.exports = new Model();
这将依赖于节点来允许相同的
模型
实例在文件之间共享,就像拥有一个全局单例一样


或者我应该通过构造函数显式地传递依赖项吗?

不,这不是一个坏做法。事实上,很多人都是这样做的。

我会说是的,这是一种不好的做法,很容易被滥用。它确保了紧密耦合的模块,意味着如果您离开mongoose,您将不得不修改与数据库相关的每个文件。这是不好的,因为误用单身汉是不好的原因是一样的


仅仅因为许多人以特定的方式做某事并不意味着这是一件好事。

谢谢。我意识到只要从任何模块中编写
User=mongoose.model('User')
,我就可以得到我的
mongoose
模型,所以他们似乎在使用这种模式。