在同一个应用程序中的不同模块之间注入相同的依赖项时是否存在任何问题?

时间:2017-03-25 17:42:49

标签: angularjs angularjs-module

我目前正试图将角度应用程序模块化,将其拆分为要素,每个要素都是具有自身依赖关系的模块。

示例结构:

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'依赖性更好清晰度和可能的测试简易性。这是正确的还是我将错误的树模块化?

非常感谢

1 个答案:

答案 0 :(得分:0)

  

A)当注入已经在应用程序的其他地方注入的依赖项时,是否存在与注入冲突/性能有关的问题?就冲突而言,我已经读过,Angular的依赖注入器将简单地覆盖任何重复的依赖关系,并注入最后一个。在表现方面,我完全处于黑暗中。

不,这就是依赖注入的目的。它允许您在任何需要的地方重用依赖项。注入依赖项时显然会有一些开销,但它非常小,我根本不担心它。

  

B)我认为对于每个'whateverX'模块具有'ui.router'依赖性比由于依赖性/代码清晰度和可能的简单性而声明'ui.router'依赖于'myApp'模块更可取测试。

你在每个模块中都需要ui.router吗? DI的想法是你在你需要的地方注入依赖项,但如果你不注入它们就不要注入它们。如果你需要在每个模块中使用ui.router,那么请注入它。但是,我没有看到如何将它添加到您的所有模块中,使您的代码更加清晰或可测试。

您要么在该模块中需要该依赖项,要么您不需要。这应该决定它是否包括在内。