【发布时间】:2015-07-16 10:52:45
【问题描述】:
问题与架构设计模式有关。案例是我正在构建一个 node.js 工具,它重用下面的几个 npm 发布的模块。我想提供一种机制来扩展我工具中所有模块之间的依赖关系。
目前的问题是我工具中的所有模块都相互通信,因此很少有文件具有:
var dep = require('dependency1');
他们从 npm 加载dependency1。我想提供一个扩展依赖的函数,例如
function (dependency) {
dependency.customFeature = ...;
dependency.customizeSettings(...);
return dependency;
}
并在我的工具内的所有模块中使用此覆盖的依赖项。
研究
我找到了this question,其中有人声称我不需要在 node.js 中进行依赖注入,我并不真正相信这种观点,因为我不知道如何在没有 DI 的情况下实现我的目标.到目前为止,我认为我需要某种 IoC。
解决方案草案
我在想一个 factory 模块,它会被最初调用 - 它会加载所有原始依赖项,对依赖项执行装饰/扩展函数,存储它们并让它们可用于其他模块。所有其他模块都会向工厂请求扩展模块,而不是加载原始依赖项。
Afaik,node.js 将加载的模块存储在内存中,因此上述解决方案应该可以工作,但我不确定它是否正确。
解决方案草案工作(编辑)
我已经实施了上述解决方案,并且效果很好。 Node.js 模块在内存中重复使用。
请建议您将在这种情况下使用的解决方案并评论“Node.js 中的依赖注入”主题。
【问题讨论】:
-
我为 JavaScript 应用程序创建了一个 IoC 容器。请查看blog.wolksoftware.com/introducing-inversifyjs
标签: javascript node.js dependency-injection module inversion-of-control