Angular模块可以相互依赖吗?

时间:2016-10-13 18:47:04

标签: javascript angularjs

我知道(并纠正我,如果我错了)Angular的angular.module('a', ['b', 'c'])的引导程序是:

  1. Bootstrap bc
  2. Bootstrap a
  3. 引导程序分为3个步骤:

    1. 初始化
    2. 配置
    3. 运行
    4. 每个步骤首先出现在依赖项b, c上,然后出现在a上 - 然后转到下一步。

      我在上面的描述中误认了哪里? 由于此plunker表明a可以依赖bb依赖于a(它实际上有效),因此我的描述是假的,因为每个模块在引导之前引导其依赖关系。

      你能帮忙吗?

1 个答案:

答案 0 :(得分:5)

Angular使用模块的延迟执行,其工作方式与您的假设不同。

每个模块都定义了一组依赖项,但没有任何“执行”(就函数调用而言)。然后在定义所有模块后执行该程序。

您的假设:A取决于B,因此它首先执行B.但B取决于A,因此无法加载A或B.

实际:创建模块A,具有依赖关系B.创建模块B,具有依赖关系A.在执行时,由于A和B都存在,因此满足所有依赖关系。

对于配置和运行块:

  

[...]所需模块的配置块   在需求模块的配置块之前执行。该   对于运行块也是如此。每个模块只能加载一次,   即使多个其他模块需要它。

实际上,这与堆栈类似(没有重复)。在A和B的示例中,首先将A添加到堆栈中,然后添加其依赖关系B.由于B依赖于A而A已经在堆栈中,因此不添加任何内容。因此,配置块按B,A顺序运行。然后运行块以相同的顺序运行。

有关详细信息,请参阅https://docs.angularjs.org/guide/module