【问题标题】:Any issues when injecting the same dependency across different modules within the same app?在同一个应用程序的不同模块之间注入相同的依赖项时有什么问题吗?
【发布时间】:2017-03-25 17:42:48
【问题描述】:

我目前正在尝试通过将 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' 依赖项更好,因为依赖项/代码清晰并且可能易于测试。这是正确的还是我模块化了错误的树?

非常感谢

【问题讨论】:

    标签: angularjs angularjs-module


    【解决方案1】:

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

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

    B) 我认为每个 'whateverX' 模块都有 'ui.router' 依赖比声明 'ui.router' 依赖于 'myApp' 模块更可取,因为依赖/代码清晰并且可能更容易测试。

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

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

    【讨论】:

    • 谢谢。这消除了一些混乱。由于尝试使用组件架构模块化我的代码,我将直接将 ui-router 或任何常用的依赖项注入到使用它的模块中,而不是注入到根模块中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2014-08-02
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多