这么多人吹捧ReactJS,但是真的好吗?
最近用react做了一个聊天类型的应用,说一下大概的看法吧:
言简意赅的说,react+redux+immutable+其它辅助lib的方案,在多状态、多交互的产品中,还是有很大的应用场景,一图胜千言:
以下是根据自己体验和社区经验,得出的一些想法:
mvvm 是架构层面的模式,函数式是编程上的范式,两者不是对立面,react+flux 是函数式,mvvm 里一样可以用函数式,恰恰在不少 mvvm 的实现框架中,FPR 是很重要的实现双绑的方案:比如 ReactiveCocoa 用到的 RAC。
是否有实际的案例去证明,应用规模大了后,mvvm 就不能用了?非要你的 flux? flux 才出现多久,以前用 mvvm 实现的大规模应用都是假的?
react 支持者都是直接根据官方文档照读:双绑很混乱,flux 才能解决一切,事实是,你喜欢单向数据流,mvvm 一样支持啊,不要双绑就行了呀。
react 我没有实际用过,不发表负面评论,但让我觉得比较亮的是透明的virtual dom和同构方案。
性能这块,ng 未必会比 react 慢,但不好的地方在于,ng 需要知道 track by 这些黑魔法才能做到优化,而很多开发者并不知道这点,在这上面,react 是领先的。
virtual dom 的引入也让 react 脱离了视图的具体实现,可以很方便的切换底层平台,这是一个大优势,而 ng2的架构也会做到这点。
react是 view 层,你要愿意,mvvm 里的 v 同样可以用 react 来做,不要随便把 mvvm 和 react 等价,认为只有 react 能用 flux,认为 react 只能用于 flux。
用还是不用?客观:因地制宜主观:因人而异其实:你高兴就好
以今天的眼光看,脱离了Flux,在解决大规模UI的问题上React本身并没有拿出比MVVM更优的方案。而结合Flux看的话,MVVM上也可以用Flux的思想,而且不论用不用Flux其实也都可以做出漂亮的数据流。
在GUI开发中使用FP是一个先进的理念,但React本身并没有和这种理念进行绑定,在其他框架当中使用FP也是完全可行的。当然在某些设计上React比MVVM更适合FP是没错的。
所谓state machine的理念其实在MVVM里也是可以践行的,把VM起名字叫state,不就有所谓V = f(VM)了?在MVVM当中的状态混乱,在React里一样会遇到state混乱。提出了FP的方式来管理state,就不可以用FP或者别的方式管理VM了吗?
然后在某些基于immutable state的实践当中,小心翼翼的去维护shouldComponentUpdate,其实这何尝不是一个心智负担?
从一些侧面透露来看,MVVM在微软的某些大规模GUI程序,比如Office上的实践是这种架构功力的证明。当然Office不开源我们对此也就无从验证。
从我个人的角度看,React是先进的,优秀的。但有时候一部分粉丝对React的疯狂吹捧会让我想起用了金坷垃亩产一万八,就像大跃进