这个问题与 架构设计模式 有关。我的情况是,我正在构建一个基于node.js的工具,它在下面重用了几个已发布的npm模块。我希望提供一种机制来扩展所有模块之间的依赖关系。
目前的问题是,我的工具中的所有模块都彼此通信,因此有一些文件包含:
var dep = require('dependency1');
他们直接从npm中加载dependency1
。我想提供一个函数来扩展这个依赖项,例如:
function (dependency) {
dependency.customFeature = ...;
dependency.customizeSettings(...);
return dependency;
}
我希望我的工具中的所有模块都能使用这个被覆盖的依赖项。
研究
我发现了这个问题,一些人声称在node.js中我不需要依赖注入,但我并不完全相信这种观点,因为我不知道如何在没有依赖注入的情况下实现我的目标。到目前为止,我认为我需要某种IoC。
解决方案草案
我想到了一个factory
模块,最初会被调用-它将加载所有原始依赖项,在依赖项上执行修饰/扩展函数,存储它们,并让它们可供其他模块使用。所有其他模块将向工厂请求扩展模块,而不是加载原始依赖项。
据我所知,node.js将已加载的模块存储在内存中,因此上述解决方案应该可以工作,但我不确定是否是正确的方法。
解决方案草案成功(编辑)
我已经实施了上述解决方案,它完美地工作。Node.js模块在内存中被重用。
请提供您在此情况下使用的解决方案,并对“Node.js中的依赖注入”主题发表评论。