Angular 启动过程

394 阅读3分钟

angular.json 文件存在于一个 Angular 工作空间的根目录下,提供了整个工作空间和某个具体项目的默认配置,为 Angular CLI 提供的工具服务。

个人理解:
projects 的配置说明 
    architect.build 配置 Angular 项目构建过程。
        构建器
            "builder": "@angular-devkit/build-angular:browser" 
        入口文件
            "index": "src/index.html"
            "main": "src/main.ts

    Angular 应用程序的启动过程
        加载"src/main.ts"文件:浏览器会首先加载 main.ts 文件,这是应用程序的入口文件。
            => main.ts中通过bootstrapModule启动根模块(AppModule) 
                => 根模块(AppModule)中通过bootstrap加载根组件(AppComponent)
                  => 将根组件(AppComponent)渲染到浏览器中(<app-root></app-root> 位于"src/index.html"文件中)
                  

Angular 应用程序的启动过程可以分为以下几个步骤:

ChatGPT:
1.  加载 `main.ts` 文件:浏览器会首先加载 `main.ts` 文件,这是应用程序的入口文件。
2.  创建平台对象:`main.ts` 文件中通常会使用 `platformBrowserDynamic` 函数创建一个平台对象,该对象用于启动应用程序。
3.  加载 AppModule:`main.ts` 文件中通常会使用 `bootstrapModule` 方法加载 `AppModule`,并将其传递给平台对象的 `bootstrapModule` 方法。
4.  加载根组件:`AppModule` 中通常会定义一个根组件,例如 `AppComponent`,该组件会被自动加载并渲染到浏览器中。
5.  初始化应用程序:在加载根组件之前,Angular 会先初始化应用程序,包括创建依赖注入器、解析组件、编译模板等操作。
6.  渲染根组件:一旦应用程序初始化完成,Angular 就会将根组件渲染到浏览器中,这标志着应用程序的启动过程完成。

在应用程序启动过程中,Angular 还会执行一些其他的操作,例如加载模块、解析路由等。总之,Angular 应用程序的启动过程是一个复杂的过程,需要多个步骤协同完成。

疑问:angular 为什么需要通过bootstrap来引导根组件 index.html不是已经指明了 吗?

ChatGPT:
在 Angular 应用程序中,index.html 文件只是一个静态页面,它包含了应用程序所需的基本结构和样式,但并不包含 Angular 组件和逻辑。因此,需要通过 bootstrap 函数来启动 Angular 应用程序,并将根组件渲染到 index.html 中。
bootstrap 函数的作用是将根组件(通常是 AppComponent)渲染到浏览器中。该函数会在 main.ts 文件中被调用,并接受两个参数:根组件的类型和一个可选的配置对象。
在 index.html 文件中,只需要添加一个 <app-root></app-root> 标记即可,这样 Angular 就知道了应该在哪里渲染根组件。但是,要想将根组件渲染到这个标记中,还需要通过 bootstrap 函数来启动应用程序。
因此,bootstrap 函数是 Angular 应用程序的入口函数,它负责启动应用程序,并将根组件渲染到浏览器中。而 index.html 文件只是一个静态页面,它只提供了应用程序的基本结构和样式。