ReactJS ,是否言过其实?

最近前端大热,各种MVC框架层出不穷,大有百鸟争鸣之意。


这“百鸟”中,数ReactJS尤其火热,出身高贵,一面世就引起关注! 之后Facebook更是宣称支持构建安卓以及苹果原生应用,这对很多烦恼于多平台的企业更是一场及时雨!


但是事实真的如此吗?我在【如何选择框架】一文中讲过,做过程序员的,对一些词语根本没有招架之力,比如丝袜,滴蜡,皮鞭.....


不好意思,讲错,是跨平台,企业级解决方案,技术规范...


如果你在选择一款框架时,仅仅看官方的介绍,或者看百度上排名第一的软文,那你只能期许自己的运气一定要很好,好到踩到狗屎运,才能误打误撞选对了框架。


我作为一个地地道道的程序员,听闻ReactJS如此大热,也不免心痒难耐,经过一番学习,终于搞明白ReactJS的原理。那么就来讲讲我对于ReactJS的看法吧。


1. ReactJS不是MVC框架,仅仅是 View端技术

很多人说Web技术的未来是面向组件技术(Web Components)! 组件即类似Bootstrap框架中的JS组件,但是这类组件没有解决一个至关重要的问题:【数据绑定没有【数据绑定】,代码中就会充斥着操作DOM的代码,也就只能使用JQuery来手动控制界面的刷新,这是一件相当痛苦的事情。

而ReactJS就是具备【数据绑定】的组件技术,让你抽离无尽的数据操作,只需要关注界面逻辑。


ReactJS属于组件技术,仅仅实现了View, 可是对于Web开发,除了View端,还充斥着事件管理,模块化,动态加载等等。使用ReactJS,就需要手动造轮子,整合其他框架,不要认为这是一件简单的事情, 弄不好会走火入魔!


PS:目前已经有人尝试结合Backbone和ReactJS,组成新的MVC框架(http://www.iteye.com/news/30771)


2.ReactJS JSX,用XML写DOM,靠谱吗?

ReactJS在写DOM代码时,建议使用JSX语法糖,然后通过NodeJS再编译成JavaScript代码运行,虽然也支持原生JavaScript,但是写起来非常臃肿。

对于这类黑盒运行的“转换”技术,前期你都会尝到一些甜头,吃到后面才发现原来是“夹心”的,夹的还是“黄莲”。从GWT,JSF,再到Coffee Script,Demo版本无一不让人为之神往,而成功的案例却寥寥无几,几乎可以说是没有.


所以,讲起JSX,论坛上都是眉飞色舞,但在末尾都会加上一句:这是我仿照XX写的Demo!


3.ReactJS Native,打造App端原生态应用,真的能实现吗?

ReactJS Native可以针对不同的平台,可以生成原生Layout! 它不是类似Phonegap的原理,而是【learn once, write anywhere】,通俗点就是说,学会了ReactJS,针对所有平台都可以使用这个语法! 也就是每个平台的代码还是要单独写,只是编程语言是一样的而已!

要实现learn once, write anywhere】,也要开发基于不同平台的组件库,兼容组件的API等,这也是一件大工程。目前ReactJS Native官方也声明:正在完善中... 所以要兼容多平台,这也远远不是一个成熟的解决方案。 对于将来是否能实现,不好妄言。


4.ReactJS VS AngularJS

很多人喜欢单纯的比较各种框架,Facebook官方也会讲ReactJS比AngularJS快!抛开上下文,单纯的讲快,其实是一种彻彻底底的流氓行为!

从范围来讲,ReactJS仅仅是一个View框架,而AngularJS包含MVC,依赖注入,模块化等等,本身并没有任何可比性!

讲到ReactJS的快,Facebook官方讲的仅仅是DOM的渲染速度,而代码中也隐藏了很多的猫腻,不能不让人为之遐想。

附上链接:http://www.infoq.com/cn/news/2015/06/is-react-really-fast


5.学习曲线

有一些人抱怨AngularJS的学习曲线太过陡峭,而ReactJS可以平滑过渡,就本身技术而言,这点我不否认。但是仅仅ReactJS不能搞定前端,你要顺便学习下Backbone,然后你会发现Backbone代码不太好组织,再顺便学习RequireJS....

所以,当讨论学习曲线的时候,千万不能鼠目寸光!



6.ReactJS到底还能不能用?

到目前为止,我并没有讲ReactJS的任何突出的优点,大家肯定觉得完全不能用嘛。 其实非也!

脱离业务来讲技术,本身也是一种耍流氓的行为。在选择框架时,一定要结合自身业务,如果你现在要做一个小型网站,并且之后也不会扩展,那我推荐你使用ReactJS,简单快速!

如果你要搭建一个平台,并且平台具有很强的可扩展性,那就要思之慎之!如果你要使用ReactJS Native来实现多平台,那就更要思之慎之了!

版权声明:本文为博主原创文章,未经博主允许不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值