Node.js模块缓存能否用于创建全局可访问的单例?
在将我的项目分成许多OO类之后,我必须通过多个构造函数传递对我的Node.js模块缓存能否用于创建全局可访问的单例?,node.js,dependencies,mongoose,Node.js,Dependencies,Mongoose,在将我的项目分成许多OO类之后,我必须通过多个构造函数传递对我的模型实例(包含Mongoose模型和模式)的引用 在Model.js模块中创建Model类的实例,然后在我需要它的任何地方都需要这个Model.js模块,这会是一种不好的做法吗 大概是这样的: Model = function () { ... } module.exports = new Model(); 这将依赖于节点来允许相同的模型实例在文件之间共享,就像拥有一个全局单例一样 或者我应该通过构造函数显式地传递依赖项吗?不,
模型实例(包含Mongoose模型和模式)的引用
在Model.js
模块中创建Model
类的实例,然后在我需要它的任何地方都需要这个Model.js
模块,这会是一种不好的做法吗
大概是这样的:
Model = function () { ... }
module.exports = new Model();
这将依赖于节点来允许相同的模型
实例在文件之间共享,就像拥有一个全局单例一样
或者我应该通过构造函数显式地传递依赖项吗?不,这不是一个坏做法。事实上,很多人都是这样做的。我会说是的,这是一种不好的做法,很容易被滥用。它确保了紧密耦合的模块,意味着如果您离开mongoose,您将不得不修改与数据库相关的每个文件。这是不好的,因为误用单身汉是不好的原因是一样的
仅仅因为许多人以特定的方式做某事并不意味着这是一件好事。谢谢。我意识到只要从任何模块中编写User=mongoose.model('User')
,我就可以得到我的mongoose
模型,所以他们似乎在使用这种模式。