一、React Native 简介
2015年3月26日,FaceBook公司对外正式发布了React Native ——使用React框架跨平台开发原生移动应用的开源技术框架(简称RN)。开发者可以使用RN高效的开发运行与Android与iOS操作系统的应用程序。他的设计理念是:使用React Native 开发,既拥有Native良好的人机交互体验,又保留了React框架的开发效率。
React、 React.js 和 React Native
React框架是Facebook从2012年以来慢慢发展起来的一套开发框架。在这套框架上诞生了React.js用来进行网页开发,以及React Native用来进行手机App开发。他们三者的关系是React是基础框架,是一套基础设计实现理念,开发者不能直接用其来开发网页或者移动应用。在他的基础上发展处了React.js来开发网页,React Native来开发移动应用。React.js开发效率比起传统的HTML网页编写要高出非常多,所以React Native的开发效率相信大家很快就会体验到。
二、React Native 开发特点
1.一次学习,随处编写
在iOS和Android上一份代码支持两个操作系统历史证明是很困难的。RN提出了“Learn once,write anywhere”。其根据不同的平台上代码会有一些微小的区别,但开发思路是相同的。RN没有狂妄的喊出“Write once,run anywhere”这样的口号但是在移动开发应用iOS和Android两大平台上差不多已经做到了这一点。
2.混合开发
混合开发是RN的另一个重要特性。具体的体现在以下几点:
1.通用的UI界面与业务逻辑有React Native开发,但与手机平台紧密关联的处理由原生代码来执行。
2.将原来使用原生代码实现的UI小部件包装成React Native的自定义组件。
3.应用界面在React Native开发的界面与原生代码开发的界面切换(双向通信,无缝衔接)。
3.高效的移动开发
绝大部分的UI界面与业务逻辑都是一套代码,其比原生语言更加快捷高效,相对于两个平台各开发一套应用其能节省50%甚至更多的工作量。具体优势体现在一下4个方面:
1.独特的UI实现框架
2.组件化开发
3.跨平台移植代码迅速
4.自动匹配不同屏幕大小的手机
4.高效的移动应用开发调试
原生代码修改后需要重新编译构建,才能展示修改后的效果。RN修改代码后可以立刻看到效果省去了编译构建的时间,同时所有代码可以一直到Chrome里面运行,断点调试、单步调试、调用栈追踪这些常用的调试方法。
5.灵活高效的应用热更新
自JSPatch被拒后,RN的热更新优势重要,每次热更新需要下载的数据量在200KB~1M这个量级,同时其数据下载不到市场应用下载的十分之一并且可以在用户无感知的情况下加入新界面、新功能与新逻辑。最重要的一点是这种热更新行为是苹果官方允许的,无需担心被拒风险。目前热更新有两种方案:pushy 和 codepush(微软提供)这两种方案会在后续文章具体介绍。
6.有效降低移动应用安装包的体积
打个不是很恰当的比方,活字应刷印刷一篇文章建模排版所需的时间是大于手抄的但是如果是百张千张呢。RN的特点是功能越复杂,包越大(大约大于15M),RN包比原生代码小的多。
7.开发软硬件要求低门槛低
其是基于ES 6(ECMAScript 2015 就是JavaScript),其函数名、变量名都是采用自然语言的命名方法。
开发模式类似于积木式开发。
RN对硬件的要求不高,支持mac、windows等多平台开发。下面环境搭建有说明。
8.使用React Native 开发的代价
1.内存消耗大