【发布时间】:2023-03-04 20:55:01
【问题描述】:
我正在开发我的第一个 NodeJS 项目。当我在书本和互联网上阅读时,我开始以经典的方式构建模块。
随着项目开始增长,我决定将模块拆分为可重复使用的小块。这导致我在文件顶部有很多require,有时还有处理循环依赖的风险。此外,这种方法并不真正适合测试,因为我必须要求所有依赖项才能进行测试。我向其他开发人员询问了解决此问题的更好方法,他们中的大多数人建议我将依赖注入与函数构造函数一起使用。
假设我有 ModuleA 和 ModuleB, ModuleC 需要 ModuleA 和 ModuleB。我应该将它们作为构造函数中的参数传递,而不是要求这些模块位于页面顶部。 例如
module.exports = function ModuleC(moduleA, moduleB) {
//module implementation here....
function doSomething() {}
return {
doSomething
}
}
这种方法最初看起来不错的问题是,在应用程序的主入口点中,我必须要求并实例化所有模块才能通过。
const ModuleA = require("./moduleA");
const ModuleB = require("./moduleB");
const ModuleC = require("./moduleC");
const moduleA = new ModuleA();
const moduleB = new ModuleB();
const moduleC = new ModuleC(moduleA, moduleB);
moduleC.doSomething();
现在只有 3 个模块,我必须编写 7 行代码才能使用模块的功能。如果我有 20 个模块来处理应用程序的主入口点,那将是一场噩梦。
我想这不是最好的方法,即使使用这种方法,测试也不容易。
所以,在开始探索 NodeJS 词的同时,我请你建议/解释我完成这个简单任务的最佳方法,也许比现在更难。谢谢。
【问题讨论】: