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 文件只是一个静态页面,它只提供了应用程序的基本结构和样式。