我目前正试图将角度应用程序模块化,将其拆分为要素,每个要素都是具有自身依赖关系的模块。
示例结构:
angular.module('myApp', ['myApp.whatever1', 'myApp.whatever2']);
angular.module('myApp.whatever1', ['ui.router']);
angular.module('myApp.whatever2', ['ui.router']);
正如您所看到的,模块'whatever1'
和'whatever2'
都需要相同的依赖关系(在这种情况下为'ui.router'
)。
A)当注入已经在应用程序的其他地方注入的依赖项时,是否存在与注入冲突/性能有关的问题?就冲突而言,我已经读过Angular的依赖注入器将简单地覆盖注入的最后一个依赖注入的重复依赖。就性能而言,我完全处于黑暗中。
B)我认为对每个'ui.router'
模块具有'whateverX'
依赖性比由于依赖性/代码声明仅'ui.router'
模块的'myApp'
依赖性更好清晰度和可能的测试简易性。这是正确的还是我将错误的树模块化?
非常感谢
答案 0 :(得分:0)
A)当注入已经在应用程序的其他地方注入的依赖项时,是否存在与注入冲突/性能有关的问题?就冲突而言,我已经读过,Angular的依赖注入器将简单地覆盖任何重复的依赖关系,并注入最后一个。在表现方面,我完全处于黑暗中。
不,这就是依赖注入的目的。它允许您在任何需要的地方重用依赖项。注入依赖项时显然会有一些开销,但它非常小,我根本不担心它。
B)我认为对于每个'whateverX'模块具有'ui.router'依赖性比由于依赖性/代码清晰度和可能的简单性而声明'ui.router'依赖于'myApp'模块更可取测试。
你在每个模块中都需要ui.router吗? DI的想法是你在你需要的地方注入依赖项,但如果你不注入它们就不要注入它们。如果你需要在每个模块中使用ui.router,那么请注入它。但是,我没有看到如何将它添加到您的所有模块中,使您的代码更加清晰或可测试。
您要么在该模块中需要该依赖项,要么您不需要。这应该决定它是否包括在内。