Angular和Ember与React的区别

2016年04月12日 javascript 暂无评论 阅读 58 views 次
首先我现在的经验是Angular和Ember都只玩过TODOMVC的tutorial,React的话自己正在写一个Chrome的App和公司的一个小项目。
最近正好有个新项目在评估用AngularEmber还是React(+Flux),我随便谈一点自己的浅见。Angular.js
首先Angular的背后是Google(难道这就是官网被墙的原因?),所以社区基础是不用担心的,整个生态也已经是非常的完整了,从最基本的Tutorial到StackOverflow的问题数到框架本身的剖析都有非常非常多,所以从这个角度看起来Angular应该算是上手比较容易的。不过Angular目前的问题看起来也很明显
1. 性能
同样是TODOMVC的Sample,Angular完全载入用了1.1s(WebPagetest - Visual Comparison)。目前我用到的基于Angular的就是Kibana,不得不说,确实挺慢的。。
2. Angular 2.0
Angular的2.0几乎是一个推翻重做的框架,估计不会有1.X的upgrade方案。所以如果现在新开始的项目采用Angular的话,会是一个很尴尬的时机。同样,如此大的改动似乎也反面印证了1.X并不是那么好。这篇文章推荐去看看Why you should not use AngularJs

React.js
React很大的特点就是“轻”,再加上VDOM这个很好的idea让React非常非常快(在上面那个测试里面0.3s左右就载入完毕)。另外React和Angular一个很大的不同就是React采用的是one-way data flow。

React的缺点嘛,大概就是现在还太新了很难说将来有没有大的API变化,目前在大的稳定的项目上采用React的,我也就只知道有Yahoo的Email。所以现在很少有批评React的声音也许不是他真的就没有坑,而是那些坑还没有被踩出来而已。

还有就是React本身只是一个V而已,所以如果是大型项目想要一套完整的框架的话,也许还需要引入Flux和routing相关的东西。React的routing我没有研究过,但是Flux的话已经有出现一些批评的声音了。

总结
Angular是真正的大而全的framework,他有自己一套思路,基本你follow这个思路往里面填代码就OK。
React是一个简短有力的library,他只负责解决你某个单一的“痛点”。

 

reactjs和angularjs在某种程度上可以看出fb和google两家公司的文化facebook喜欢独立,小巧,快速,创新。
抛开flux,react route不谈,reactjs作为view本身非常独立,不仅可以在浏览器上用,还可以在server端结合nodejs做模板。
除了独立,reactjs还很灵活小巧,用起来像拼lego的积木,一个component接着另一个component。
在性能方面,由于运用了virtual dom技术,reactjs只在调用setstate的时候会更新dom,而且还是先更新virtual dom,然后和实际dom比较,最后再更新实际dom。这个过程比起angularjs, knockoutjs的bind方式来说,一是更新dom的次数少,二是更新dom的内容少,速度肯定是快了的。另外reactjs用了jsx,这个相当于半个新语言了。

google发展全面,组织结构清晰,分工明确,业务扩展虽缓慢,但是发展良好。
angularjs是一个m-v-whateever framework。framework的一个特点就是很全面,除了m-v-whatever面面俱到,它还自带了很多$开头的service,$http, $route, $q(defer),$cookie等等,基本上只要你在做web开发用过的东西,它都有一个。
angularjs的架构清晰,分工明确,model,view,controller谁在什么时候做什么事情说的很清楚,整个框架充满了DI的思路,耦合性非常低,对象都是被inject的,也就是说每个对象都可以轻易被替换而不影响其他对象。
此外,angularjs的扩展性不错,但是略微有点笨拙,你可以自定义directive,当然如果嫌麻烦,只封装到controller+html很多时候也够了。

至于应用场景
根据上述总结,我个人觉得企业项目,或者说业务比较正规的用angularjs比较好。对于那种倾向于比较好玩的,有趣的,有创意的项目用reactjs比较好。
企业文化这东西还是很重要的,这两个东西一直做下去,reactjs会越来越像fb,angularjs会越来越像google。

给我留言

您必须 登录 才能发表留言!

Copyright © 大一网 保留所有权利.  

用户登录

分享到: