BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

React真的比AngularJS快吗?

| 作者 徐川 关注 11 他的粉丝 发布于 2015年6月4日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

React自诞生以来,一直以其渲染速度快著称,特别与AngularJS和EmberJS等相比更是如此。但也有人不同意这个观点,以色列软件开发公司500Tech的CEO Boris Dinkevich近日发表博文称,其实React并不真正比AngularJS快。

React之所以被人们认为快的原因,是因为DOM操作起来很慢,而React采用了Virtual DOM来避免直接对DOM进行操作。Boris认为,实际上官方并没有提供Demo来说明性能提升了多少,而Virtual DOM带来的Javascript对数据的复杂操作可能会抵消它的好处。在考察了演示React和AngularJS对比的两个广为传播的Demo后,Boris的结论是,基于Virtual DOM的框架并不比传统的框架要快。

第一个大家看得最多的Demo来自于React.js Conf 2015上的演示,内容是React和AngularJS的对比(Demo:ReactAngularJS)。Boris发现,这个demo其实对AngularJS并不公平,因为demo作者忽视了AngularJS里基本的提升性能的语句“track by”。只需简单的修改一行代码,将原来的:

  1. ng-repeat="(key, db) in databases"

修改为:

  1. ng-repeat="(key, db) in databases track by key"

就可以看到,修改后的AngularJS Demo速度大大提升,并不比React的表现要慢。

第二个Demo来自于ng-conf 2015的演示,可以看到在Angular的指令中使用React后速度显著提升。但Boris认为这个对比并不公平,因为它演示的是React组件渲染对比Angular渲染和数据处理。在Angular Demo里选择使用isolated scope后,结果显示两者之间的速度差别不大。

Boris的文章在Hacker News上引起了激烈讨论,有些人认为作者言过其实,他们在自己的项目中使用React部分代替Angular后速度快了很多;也有些人拥护作者的观点,认为React在过去的一段时间里被过度营销,一些Demo并未考虑实际情况。但还有一些人则认为速度并不是React的卖点,用户feedjoelpie表示

React只是使用起来非常友好并且易于理解,是virtual DOM让这一切成为可能,同时速度能够让人接受。DOM diff的目标并不在于让React变得比它的同胞更快,而是让你不用再考虑DOM,取而代之的是关注你前端的全局状态。

他同时还推荐了另一篇介绍React优点的文章。也许,现在是抛开迷思,重新思考React能给我们带来什么的时候了。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT