Angular 2:什么是引导程序?

时间:2017-06-13 16:08:19

标签: angular

我查看了文档,但在bootstrap期间发生的一步一步的过程中我找不到任何内容。

我正在寻找类似的东西:

  1. 收集所有模块
  2. 提供者被实例化并被放入各个模块的注入器
  3. 组件,指令和管道
  4. ...
  5. 我查看了Angular GitHub上的来源,但我找不到platformBrowserDynamic.bootstrapModule(AppModule)的实现(我假设会详细介绍该过程)。该目录位于here,但bootstrapModule无处可寻。

    如果有人可以向我解释,或者有人可以将我链接到引导过程的来源,我们将非常感谢!

1 个答案:

答案 0 :(得分:4)

您必须首先了解的是,与应用程序引导程序相关的API目前正在审核中。这是非常高级别的操作顺序。

这些行:

platformBrowserDynamic().bootstrapModule(AppModule)
  1. 使用根注入器(platformBrowserDynamic)创建平台
  2. 使用平台引导模块(bootstrapModule)
  3. 当模块被引导时(如果您使用AOT,则跳过此部分):

    1. 创建JIT编译器
    2. Compile AppModule及其所有组件 - create factories
    3. Bootstrap AppModule factory
    4. 当提升AppModule工厂时:

      1. 创建NgZone注入器
      2. 创建AppModule实例(moduleRef)
      3. 在AppModule中的bootstrap中指定的Boostrap组件
      4. 这意味着:

        1. 创建引导程序组件实例 - 为所有子组件(Services.createRootView)创建组件视图并实例化组件/指令类。我相信这是最重要的一步,因为Angular通过编译器为所有组件创建的工厂递归递归并创建视图。它还创建DOM节点并将它们相互连接。
        2. 将创建的根组件视图附加到applicationRef
        3. Run change detection触发组件上的所有生命周期挂钩