React大热?再来泼冷水!

最近人人都在聊ReactJS,Facebook也是大力支持,其旗下所有产品都全线使用React,单看列表也会亮瞎眼睛! AirBnB,Asana,Atlassian......


如此多成功案例,后台又是大佬Facebook,大有势不可挡之势。


而之前一直热捧的AngularJS与其相比,更像是在上演一部夕阳红。最美不过夕阳红,温馨又从容...


谈论技术,许多工程师总是痴迷于耀眼光环,而抛弃其业务场景。贸贸然入坑,最后不能自拔。今天我们就再来聊聊ReactJS,看看它是否真的适合你?


ReactJS作为View框架有两大优势:

一、组件化

经历过jQuery时代的都了解,jQuery的DOM操作存在很多问题。

1. DOM操作繁杂冗余;代码量和软件维护成本成正比关系,甚至于几何关系,jQuery的代码量是出了名的多,老多了!

2. 不易封装; 代码相似却不相同,逻辑简单时,封装加大复杂性,逻辑复杂时,却又极难抽离共性

3. 不易扩展;没有封装,就导致系统没有架构,没有架构何谈扩展?

ReactJS抽离共性DOM为组件,绑定数据,基本解决了jQuery时代的弊端,不得不说是前端DOM开发的一大福音。


二、虚拟DOM(Virtual DOM)

前端从诞生的那天起,就存在性能问题。JavaScript Document本身就提供了Fragment来优化DOM操作。

ReactJS虚拟DOM的运行原理和Fragment大同小异。即存在一个类似缓存的Document,通过缓存来避免大量重复的DOM更新,而换成一次性更新。


前端组件化的概念一直存在,也有很多成熟的实现,从最早Backbone中的粗粒式View,到AngularJS中强大的Directive,都是组件化的缩影。为什么单单ReactJS的组件被人津津乐道呢?

答案在于其轻量级


轻量级有时是短板

很多人赞叹Java成熟、稳定、强大、流行、NB吊炸天,但不可否认它的重量级。我需要写一个简单的Test,先使用Maven构建,导入Spring,加入Hibernate,引入Apache Utils,配置XML,还需要.......咦,老乡,别走,我还没讲完呢!!!就因为其如此麻烦,在百度一搜一大把:spring-hibernate Example,这其实是对Java莫大的讽刺。


反过来看Python,一个py文件,就是一个应用程序,不得不感叹其小巧优美,怪不得很多人对其情有独钟!

然而,轻量级是好事吗? 

Python如此小巧优美,可很多人提出:有哪些大型的系统在使用Python,这样的问题其实是在质疑其能力。

但是从没有人问这样的问题:java有谁在用? 

ReactJS一如Python的优美,只有一个组件框架,即插即用,非常方便。但是很多时候,需要在前端处理复杂逻辑时,就需要自行设计前端架构。有谁因为其小巧,而愿意承受后期的复杂呢?


数据单向绑定

ReactJS为了性能考虑而舍弃双向绑定,即数据变化更新DOM,而DOM变化并不更新数据!舍弃DOM数据绑定,性能确实上了一个台阶,可是如果你要处理很多表单操作,只能呵呵呵了。


JSX模板

一直深深痛恶转换语言,一如前几年的JSF,现今的CoffeeScript,TypeScript等等。这些都是不愿意学习JS,而又不得不使用JS的人发明的。一直以来的经验告诉我,有转换就有伤害!

JSX模板是HTML和JS共存,类似写XML语言,经过JSX编译,转换为JavaScript语言,想象一下,在深入使用之后,你肯定会爆出一句:这编译器怎么这么傻X,这怎么编译成这样!!



看过以上,相信你也明白了。ReactJS就是为简单型,展示型系统所设计,类似Facebook,AirBnB,性能是最重要的,而逻辑相对简单,表单操作更是少之又少。


ReactJS也仅仅面向纯互联网业务,企业应用使用成本太高,建议放弃。如果你考虑引入ReactJS,要再三思量,ReactJS是否匹配你的业务。


目前百度上多数ReactJS的帖子,前面说的头头是道!最后一定附加Demo,测试,研究等字眼!


呵 呵 呵





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值