在同一应用程序的不同模块之间注入相同的依赖项时有什么问题吗?

Any issues when injecting the same dependency across different modules within the same app?

我目前正在尝试模块化 angular 应用程序,方法是将其拆分为多个功能,每个功能都是一个具有自己依赖项的模块。

示例结构:

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) 我认为每个 'whateverX' 模块具有 'ui.router' 依赖性比声明仅对 'myApp' 模块的 'ui.router' 依赖性更好,因为 dependency/code 清晰并且可能易于测试。这是正确的还是我模块化了错误的树?

非常感谢

A) When injecting a dependency that has already been injected elsewhere in the app, are there any issues concerning injection conflicts / performance? In terms of conflicts I've read that Angular's dependency injector will simply override any duplicate dependency with the last one injected. In terms of performance I'm completely in the dark.

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

B) I thought that having the 'ui.router' dependency for each 'whateverX' module would be preferable to declaring the 'ui.router' dependency on just the 'myApp' module due to dependency/code clarity and possibly ease of testing.

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

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