Angular进阶:View的概念

2018-05-10
阅读 2 分钟
2.9k
在Angular中,只有两种View:Host Views(也叫作Component View)和Embedded View。这点从源码中的isComponentView和isEmbeddedView也能得到证实。

Angular源码分析:使用数组来存储节点树、对它进行后序遍历

2018-03-27
阅读 4 分钟
2.6k
虽然DOM是以树的方式来组织,但Angular是以平数组的方式来存储view中各个节点(包括DOM节点,也包括Directive节点、Provider节点等)的。数组中每个节点有一个childCount属性,表示在这个数组项的后面有多少个节点是它的后代。举个例子,下面的平数组

深入理解 Angular 变化检测(change detection)

2018-03-23
阅读 5 分钟
8.4k
Angular Change Detection发生的时机:基本上所有的异步事件发生(并且回调函数已经执行完毕)以后,都需要触发change detection(因为此时进程的状态可能已经发生改变): Events - click, submit, …

Angular源码剖析:DefaultKeyValueDiffer和DefaultIterableDiffer的变更检测算法

2018-03-05
阅读 13 分钟
4.3k
Angular原生实现了两个工具类:DefaultKeyValueDiffer和DefaultIterableDiffer,它们分别用来检查两个对象或两个数组之间的差别(也就是diff)。典型的使用场景是:检查某个变量在两个时刻之间是否发生了改变、发生了什么样的改变,在这篇文章中,我们称它为变更检测。

Angular 进阶:从源码理解@Input绑定是如何被编译和实现的

2018-03-01
阅读 6 分钟
3.2k
阅读本文需要已经对ngc输出的代码、Angular packages/core源码有所熟悉。这是我搭建的一个直接可以使用的Angular aot demo项目,具体功能和用法可以看README,我认为它对于深入学习Angular源码十分有帮助。本文也使用这个项目开始做实验。

Angular Query黑魔法

2018-01-29
阅读 1 分钟
2.1k
更进一步地,通过Query,可以从指定的Element的Injector(View Injector)中获取你想要的服务:在这个例子中,我们想要query的服务就是Component实例。

Angular进阶:Angular编译机制(AOT、JIT)

2017-10-15
阅读 16 分钟
21.4k
2018年2月17日更新:最近又做了2个小Demo用来研究Angular的编译和打包,基于Angular5,一个使用rollup,一个使用webpack,(rollup目前无法做到Angular的lazy loading)。不仅项目文件结构非常简洁,而且使用ngc(Angular compiler)的输出作为打包的输入,这意味着:你不仅可以修改ts代码然后查看ngc输出有何变化,而且可以...