今日阅读及笔记

阅读的文章:Why I Ditched Angular for React

AngularJS被人诟病最多的地方就是性能,学习曲线太陡。

DOM操作

因为AngularJS严重依赖于DOM,而DOM的操作是非常昂贵的。AngularJS应用在启动后必须先遍历一边DOM,进行directivecompile,所以需要当一个页面的节点超过一定数量后,这个过程会变成一个痛点。

双向数据绑定

双向数据是一把双刃剑,在ECMAScript 5中并未提供原生的数据/对象变化监视。所以,AngularJS采用了一种称为dirty checking的机制来跟踪数据的变化。当在任意一个$scope内更改了数据,Angular将触发了$digest,这个过程会导致性能问题。考虑应用绑定了一定数量的数据,一次$digest的耗时将很可观。

独立的应用循环

AngularJS拥有一套自己的应用循环,这就意味着外部的更改必须通过某种方式来通知AngularJS。当与第三方库集成时,必须调用AngularJS的$apply方法,以触发$digest

ReactJS

React将自己定位在MVC模式的V。React更鼓励适用单向的数据绑定(one-way data flow)。借助于Virtual DOM,React在性能上会显著优于AngularJS。同时作为V,React提供了一个封装component的方式,类似于AngularJS中的directive

迁移到React?

与AngularJS不同,React作为V仅专注在相应层面的实现。举例来说,AnguarJS中提供的模块化,$http/$q、Router等功能,在React中皆没有。但可以接住于其他的库来实现。

附:Quora上一个关于AngularJS和React的详细比对文章