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

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

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

Angular 注入器层次结构

2018-01-29
阅读 2 分钟
2k
官方文档:If you only specify providers at the top level (typically the root AppModule), the tree of injectors appears to be flat. All requests bubble up to the root NgModule injector that you configured with the bootstrapModule method.

Angular Query黑魔法

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

[Angular, TypeScript, 路由算法] 模拟IP层路由协议,实现LS算法、洪泛算法、DV算法、路由毒化

2018-01-07
阅读 5 分钟
6.2k
链路状态协议(Link-state routing protocol)和距离向量路由协议(Distance-vector routing protocol)是分组交换(Packet switching)网络中最主要的两种路由协议。本项目的模拟路由器实现了LS路由算法、LS广播洪泛、DV路由算法,以及防止DV路由环路和无穷计数问题的策略。此外还实现了完整的前后端以便研究者通过UI界...

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

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