Angular总结二:Angular 启动过程

要弄清楚 Angular 的启动过程,就要弄明白 Angular 启动时加载了哪个页面,加载了哪些脚本,这些脚本做了哪些事?

通过 Angular 的编译依赖文件 .angular-cli.json 可以看到 apps 这个对象类的数组

这个对象中有 root 这个属性,这个是 Angular 应用的根目录,也即是 src 目录是 Angular 应用的根目录。

这个对象中有 index 这个属性,这个是 Angular 启动时加载的页面,也即是 src 目录下的 index.html 是 Angular 启动时加载的页面。

这个对象中有 main 这个属性,这个是 Angular 启动时加载的脚本,也既是 src 目录下的 main.ts 是 Angular 启动时加载的脚本。负责引导 Angular 的启动。

main.ts 文件内容如下

1. 引入 enableProdMode 模块,可以通过这个方法来关闭 Angular 的开发者模式,if(environment.production){enableProdMode();}如果为生产环境则关闭开发者模式,

2. Angular 导入 platformBrowserDynamic 模块来启动这个应用,

3. 导入命令行工具生成的整个应用的主模块 AppModule,

4. 导入环境配置文件 environment, 通过该目录下的 environment.prod.ts 配置文件配置生产环境,通过 environment.ts 文件来配置开发环境,还可以自定义测试环境,如 environment.test.ts

Angular 通过 AppModule 模块来启动应用,并加载该模块需要的子模块

app.module.ts 内容如下:

1. 向外暴露了一个 AppModule 类。

2. 使用 NgModule 装饰器生命了一个模块

3. declarations 申明模块中有什么东西,该申明中只能声明组件、指令、管道

4. imports 申明要让应用正常运转还需要什么东西,因为程序要运行在浏览器中,所以 BrowserModule 模块是必须要的。

5. providers 申明模块中需要用到的服务

6. bootstrap 属性申明了主组件

Angular 应用在加载时,会加载 AppModule 模块以及该模块所依赖的所有子模块。

为了弄明白加载的页面,分析 app.comonment.ts 这个组件:

1. 从 angular 核心模块中引入 Component 组件模块,

2. 在元数据装饰器中指明了选择器 app-root ,模板 app.comonent.html,样式 app.component.css,

3. 在 AppComponent 类中,定义了 title 属性,并为其赋值。

在 index.html 中

<app-root></app-root> 这里的内容将会被替换,替换内容为选择器为 app-root 的模板内容,既是 app.component.html  的内容:

1. 该模板中,{{title}} 是插值表达式,被其控制器的类的属性 title 值替换为 “app”。

于是,启动 Angular 应用并在浏览器中查看时,先显示“欢迎...”,随后被替换为 app.component.html 的内容:

原文地址:https://www.cnblogs.com/xinjie-just/p/8446402.html

时间: 2024-08-30 14:04:17

Angular总结二:Angular 启动过程的相关文章

tomcat源码分析(二)启动过程

在Catalina的load方法中,首先初始化Server组件. // Start the new server if (server instanceof Lifecycle) { try { server.initialize(); } catch (LifecycleException e) { log.error("Catalina.start", e); } } 在StandardServer中初始化service public void initialize() throw

Angular基础(二) 组件的使用

? 一.简单操作 a) 使用Angular CLI可以快速创建项目框架,先运行 $ npm install –g @angular/[email protected]安装CLI,为CLI的位置设置环境变量,然后就可以全局使用ng命令了. 执行ng new –ng4 angular-hello-world可以创建Angular4项目,会自动生成基础的文件夹和文件,还会自动进行npm i操作,下载并安装所需的依赖. 然后执行ng serve就可以编译并启动这个程序了,但ng并不会自动打开浏览器. b

Samza在YARN上的启动过程 =》 之二 submitApplication

首先,来看怎么构造一个org.apache.hadoop.yarn.client.api.YarnClient ? 1 2 3 4 5 class ClientHelper(conf: Configuration) extends Logging {   val yarnClient = YarnClient.createYarnClient   info("trying to connect to RM %s" format conf.get(YarnConfiguration.RM

google 分屏 横屏模式 按home键界面错乱故障分析(二) 分屏的启动过程

google 进入分屏后在横屏模式按home键界面错乱(二) 你确定你了解分屏的整个流程? Android 关机对话框概率没有阴影故障分析 android recent key长按事件弹起触发最近列表故障分析 google 分屏 popup无法显示故障分析 分享此文便是对代码GG的支持,也是爱的表达方式,所以让爱来的猛烈些吧. 代码阅读,请到此处http://androidxref.com 查看原生代码 前情回顾: google 分屏 横屏模式 按home键界面错乱故障分析(一) 上一节我们主要

Linux学习之旅(二) --- Linux启动过程

一.通用操作系统的启动过程: 不同的处理器和硬件系统会采用不同的启动策略,从而具体的启动过程会有所差异. 但无论差异如何,从计算机系统的角度来看,启动过程一般分为三个步骤:                  开机并执行bootloader程序     ---->     操作系统内核初始化     ---->     执行第一个应用程序 大致流程: 1.开机,系统供电,此时硬件电路会产生一个确定的复位时序,保证CPU是最后一个被复位的器件: 2.当正确完成复位后,CPU开始执行第一条指令,该指

Android深入四大组件(二)Service的启动过程

相关文章 Android深入理解四大组件系列 前言 此前我用较长的篇幅来介绍Android应用程序的启动过程(根Activity的启动过程),这一篇我们接着来分析Service的启动过程.建议阅读此篇文章前,请先阅读Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章. 1.ContextImpl到ActivityManageService的调用过程 要启动Service,我们会调用startService方法,它的实现在C

Activity组件启动过程(二)

前面启动过程图:(源码基于Android5.1) 获得到ActivityManagerProxy的实例后,会通过ActivityManagerProxy将启动Activity组件的相关信息写入到Parcel对象data中,然后发送一个类型为START_ACTIVITY_TRANSACTION的进程间通信请求给AMS(ActivityManagerService),接下来的工作的会在AMS进程中进行完成. 接下来的启动过程总结为下图: 处理START_ACTIVITY_TRANSACTION类型的

cocos2dx 启动过程详解二:内存管理和回调

在上一篇的第二部分中,我们有一句代码待解释的: // Draw the Scene void CCDirector::drawScene(void) { -- //tick before glClear: issue #533 if (! m_bPaused) //暂停 { m_pScheduler->update(m_fDeltaTime);   //待会会解释这里的内容 } -- } 这里是一个update函数,经常会写像this->schedule(schedule_selector(X

Spring 源码学习(二) IOC容器启动过程

这一节主要是记录一下Spring Ioc 容器的启动过程. Spring 的 Ioc 容器是怎么被加载和使用的? web容器为它提供了宿主环境 ServlectContext,  Tomcat 启动时会读取web.xml. 并且实例化web.xml中配置的ContextLoaderListener ,下面看一下ContextLoaderListener的创建过程: 在实例化ContextLoaderListener 之后,通过接口回调执行ContextLoaderListener 类中的cont