随着科技的发展,手机开发也在向好的方向不停的转变。IOS和Android两大手机操作横空出世,称霸江湖。我们每开发一个手机软件最少都需要开发这两个终端。 两大操作系统都在不断的提升完善,能力越来越强大,这对于我们开发者是好事,因为用智能手机的用户越来越多。

话天下大事,分久必合,合久必分。这句话对于移动开发也是一样的。

这几年来,移动应用开发者做梦都希望有一个能跨平台的开发工具,让他们不要把同一个移动应用使用不同的开发语言写两遍。但跨平台开发工具的实现很难,直到Facebook开源了React Native.

###React,React.js, React Native 要想学习React Native首先了解上面三个概念和之间的联系。

  1. React 是基础框架,提供了一套基础设计实现理念,并不能直接用来开发,就好比马克思主义对于我党的作用一样。
  2. React.js 是在React理念的指导下产生的专门用来开发网页的框架.与React同时出现和发展,React的相关概念都在React.js文档中。
  3. React Native 是用来开发移动应用。需要用到React概念,但是不需要React.js的东西。

预备知识

  1. 学习React Native开发需要了解基础的JavaScript编程知识。如果有编程经验的可以通过 慕课网提供的学习页面http://www.imooc.com/learn/36 或者直接阅读ECMAScript 6入门电子版
  2. 最好简单了解一下Android或者IOS其中一门开发,因为React Native开发的功能偶尔还需要借助原生代码实现,大家可以看一下我写的爱上Android这本书了解下Android开发

#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支持混合开发,大致分为三种情况。

  1. UI界面由React Native开发, 但UI事件处理由原生代码执行
  2. 将原来使用的原生代码实现的UI小部件包装成React Native的自定义控件
  3. 应用界面在React Native开发的界面与原生代码开发的界面间进行切换,React Native的强项就是UI开发,在混合开发中,能用React Native开发的界面,优先用React Native开发.

优缺点

RN优点很明显,

  1. 可以大大节省开发成本,百分之90多界面可以通过RN开发,一份代码可以适配Android和IOS.
  2. RN有独特的UI实现框架,借助组件化开发是团队规模更容易进行调整,可以快速迭代项目.
  3. RN可以通过一些手段自动匹配不同屏幕大小的手机,再也不需要自己去计算视图的大小和位置.
  4. RN具备高效的UI调试.

RN也有一些缺点,不过相对于优点基本上可以忽略

  1. RN开发的程序内存消耗略大, 开发模式下开销大几十兆,发布后差异不大, 目前手机基本上都有2G以上的内存, 几十兆可以忽略不计了。
  2. 运行速度略慢, 不可否认,原生代码比RN运行速度略快, 显示一个界面多一两毫秒吧,正常的人根本感觉不到,如果你用不经过优化的原生代码反而不如RN.
  3. 安装包比原生代码安装包大,这点更可以忽略了, 现在手机什么都缺就不缺空间.

React Native开发环境搭建

React Native可以在Mac,Linux,Windows上搭建, 其中如果开发IOS,必须在Mac上搭建。具体如何搭建可以参考React Native环境搭建

学习资料

React Native 官方文档中文版 React Native中文网 ECMAScript 6入门

更多精彩请关注微信公众账号likeDev

是时候了解React Native了相关推荐

  1. fragment中文网_更新 · React Native 中文网

    时刻将 React Native 更新到最新的版本,可以获得更多 API.视图.开发者工具以及其他一些好东西(译注:官方开发任务繁重,人手紧缺,几乎不会对旧版本提供维护支持,所以即便更新可能带来一些兼 ...

  2. React Native —— App

    使用 React Native 作为 app 框架,Redux 作为数据层,因此我们需要选用一些支持性的技术和工具: 开源的 Parse Server 做数据存储 - 运行在 Node.js 上. F ...

  3. 【React Native】iOS原生导航跳转RN页面

    上一篇介绍了React Native使用react-navigation进行导航跳转页面,现在我们介绍下原生iOS中怎么导航进一个新的React Native页面. 一.原生跳转React Nativ ...

  4. 【React Native】react-navigation导航使用方法

    目录 集成react-navigation 使用react-navigation 上一篇介绍了如何在已有iOS项目中集成React Native.这一篇我们把上一篇的demo做下拓展,添加点击电影跳转 ...

  5. 给iOS开发者的React Native入门使用教程

    目录 一. 原生iOS项目集成React Native 二. 原生跳转RN页面 三. 显示豆瓣热门电影列表 四. 改为导航 五.完整源代码 一. 原生iOS项目集成React Native 创建一个新 ...

  6. 对比React Native、dcloud、LuaView三个框架技术(内部)

    转载自:http://www.jianshu.com/p/ee1cdb33db8d 主要对比React Native和5+SDK(就是dcloud的SDK)两个: 开发语言:三个都是用其他语言来统一开 ...

  7. 初步了解React Native的新组件库firstBorn

    first-born is a React Native UI Component Framework, which follows the design methodology Atomic Des ...

  8. 我在React Native中构建时获得的经验教训

    by Amanda Bullington 通过阿曼达·布林顿(Amanda Bullington) 我在React Native中构建时获得的经验教训 (Lessons I learned while ...

  9. React Native开源项目如何运行(附一波开源项目)

    学习任何技术,最快捷的方法就是学习完基础语法,然后模仿开源项目进行学习,React Native也不例外.React Native推出了1年多了, 开源项目太多了,我们以其中一个举例子.给大家演示下如 ...

  10. React Native常用组件之ListView

    1. ListView常用属性 ScrollView 相关属性样式全部继承 dataSource ListViewDataSource 设置ListView的数据源 initialListSize n ...

最新文章

  1. numpy.loadtxt画功率谱图
  2. java常见不可变类_Java语言不可变类的诀窍
  3. linux module原理,NodeJS的模块原理
  4. android webview控件的缩放问题 隐藏缩放控件
  5. lua 区间比较_TI-Lua 系列教程2.4.1: 条件分支
  6. 如何正确 Get 分库分表?
  7. 【Transfer Learning】泛化到未知域:域泛化 (Domain Generalization) 综述论文
  8. 用engineercms建立项目管理平台
  9. JAVA学习心得——DBUtil工具类
  10. 如何用u盘给惠普服务器安装系统,如何用u盘装惠普系统教程
  11. u3d occlusion 遮挡剔除
  12. 如何提升原创文章排名与百度冰桶算法
  13. scylla_Scylla评论:Apache Cassandra增压
  14. 流程审批类系统数据库结构怎么定义
  15. 精通CSS.DIV网页样式与布局(四) ——页面背景
  16. 原生js省市区三级联动
  17. 文本文件的加密与解密
  18. BLDC 120度方波控制方案 调制方式包含单极性和双极性,反电动势过零点AD采样
  19. excel连续格式刷_使用格式刷复制Excel格式的简便方法
  20. notepad++ 配置自己的notepad++的界面风格

热门文章

  1. java8的stream流操作的数据结构
  2. JS事件循环 Event Loop
  3. 一个关于if else容易迷惑的问题(转自鸟哥公众号)
  4. PHP SESSION生存时间设置
  5. Spring的IOC容器为什么用反射而不用new来创建实例?
  6. netty的零拷贝、架构设计、ByteBuf扩容机制详解
  7. Dubbo源码分析系列之-整体架构设计
  8. DOS中切换盘符(直接CD不行)
  9. 改善Python程序的91个建议(二)
  10. 你真的了解 Load Balance 嘛