Angular
Angular 最初的设计是针对大型应用进行的,上手成本较高,因为开发者需要掌握一些对前端开发来说较陌生的概念,其中包括依赖注入、模块化、脏检查、AOT 等设计。
依赖注入
在项目中,依赖注入体现为:项目提供了这样一个注入机制,其中有人负责提供服务、有人负责消耗服务,通过注入机制搭建了提供服务与消费服务之间的接口。对于消费者来说,无须关心服务是否已经被创建并初始化,依赖注入机制会保证服务的可用性。
在这样的机制下,开发者只需要关注如何使用服务,至于这个服务内部的实现是怎样的、它是什么时候被初始化的、它又依赖了怎样的其他服务,都交给了依赖注入机制来处理,不需要操心。
模块化组织
Angular 模块把组件、指令和管道打包成内聚的功能块,每个模块聚焦一个特性区域、业务领域、工作流或通用工具。
脏检查
什么是脏检查呢?在 Angular 中,触发视图更新的时机来自常见的事件如用户交互(点击、输入等)、定时器、生命周期等,大概的过程如下:
- 在上述时机被触发后,Angular 会计算数据的新值和旧值是否有差异;
- 若有差异,Angular 会更新页面,并触发下一次的脏检查;
- 直到新旧值之间不再有差异,或是脏检查的次数达到设定阈值,才会停下来。
AOT 编译和 JIT 编译
我们先来介绍下 AOT 编译和 JIT 编译。
- JIT 编译:在浏览器中运行时编译,视图需要花很长时间才能渲染出来,导致运行期间的性能损耗。
- AOT 编译(预编译):在构建时编译,使得页面渲染更快,可提高应用性能。