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

时间:2012-07-01 14:01:53

标签: node.js dependencies mongoose

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

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

这样的事情:

Model = function () { ... }

module.exports = new Model();

这将依赖Node的module caching来允许在文件之间共享相同的Model实例,例如拥有全局单例。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我会说是的,这是一种不好的做法,很容易被滥用。它确保紧密耦合的模块,这意味着如果你离开mongoose,你将不得不修改每个接触数据库的文件。因为滥用单身人士的原因很糟糕,所有这些都是不好的。

仅仅因为许多人以某种方式做某事并不表示这是一件好事。