随着科技的发展,手机开发也在向好的方向不停的转变。IOS和Android两大手机操作横空出世,称霸江湖。我们每开发一个手机软件最少都需要开发这两个终端。
两大操作系统都在不断的提升完善,能力越来越强大,这对于我们开发者是好事,因为用智能手机的用户越来越多。
话天下大事,分久必合,合久必分。这句话对于移动开发也是一样的。
这几年来,移动应用开发者做梦都希望有一个能跨平台的开发工具,让他们不要把同一个移动应用使用不同的开发语言写两遍。但跨平台开发工具的实现很难,直到Facebook开源了React Native.
React,React.js, React Native
要想学习React Native首先了解上面三个概念和之间的联系。
- React 是基础框架,提供了一套基础设计实现理念,并不能直接用来开发,就好比马克思主义对于我党的作用一样。
- React.js 是在React理念的指导下产生的专门用来开发网页的框架.与React同时出现和发展,React的相关概念都在React.js文档中。
- React Native 是用来开发移动应用。需要用到React概念,但是不需要React.js的东西。
React Native的特点
使用React Native开发,既拥有Native的良好人机交互体验,又保留了React框架的开发效率。
一次学习,随处编写
一份代码同时支持IOS和Android两个平台在历史上证明是非常困难的,所以React Native小组并没有狂妄的喊出"Write once,run anywhere",而是提出了“Learn once,write anywhere”。使用RN可以为两个操作系统开发应用程序,但不同的平台上的代码根据平台会有一些微小的区别,但开发思路是相同的。在UI开发上,RN差不多做到了"Write once,run anywhere"。
混合开发
React Native支持混合开发,大致分为三种情况。
- UI界面由React Native开发, 但UI事件处理由原生代码执行
- 将原来使用的原生代码实现的UI小部件包装成React Native的自定义控件
- 应用界面在React Native开发的界面与原生代码开发的界面间进行切换,React Native的强项就是UI开发,在混合开发中,能用React Native开发的界面,优先用React Native开发.
优缺点
RN优点很明显,
- 可以大大节省开发成本,百分之90多界面可以通过RN开发,一份代码可以适配Android和IOS.
- RN有独特的UI实现框架,借助组件化开发是团队规模更容易进行调整,可以快速迭代项目.
- RN可以通过一些手段自动匹配不同屏幕大小的手机,再也不需要自己去计算视图的大小和位置.
- RN具备高效的UI调试.
RN也有一些缺点,不过相对于优点基本上可以忽略
- RN开发的程序内存消耗略大, 开发模式下开销大几十兆,发布后差异不大, 目前手机基本上都有2G以上的内存, 几十兆可以忽略不计了。
- 运行速度略慢, 不可否认,原生代码比RN运行速度略快, 显示一个界面多一两毫秒吧,正常的人根本感觉不到,如果你用不经过优化的原生代码反而不如RN.
- 安装包比原生代码安装包大,这点更可以忽略了, 现在手机什么都缺就不缺空间.
React Native开发环境搭建
React Native可以在Mac,Linux,Windows上搭建, 其中如果开发IOS,必须在Mac上搭建。