React Native相关调研总结

一.概要

React Native - 使用React开发世界一流的原生应用;

使用JavaScript和React(对JS有一定扩展)作为开发语言;

React Native专注于夸平台的开发效率,一次学习,跨平台应用(支持安卓和iOS)。

二.集成步骤

1.前往https://nodejs.org/en/下载node.js的pkg并进行安装

2.前往https://github.com/facebook/react-native下载最新版React Native(0.31)

3.解压并执行npm install命令

4.新建Xcode工程,在工程中按照需引入React Native的库(存在于Libraries目录)

5.完成React Native集成

三.对App体积的影响

1.包含模拟器和真机版本的静态库体积总共约30M

2.生成AppDemo只使用基本的类,ipa大小是1.7M

四.性能

官方宣称有媲美原生代码的性能,但是有网友提出React Native的性能并不理想,在页面层级到达5的时候,就要进行代码优化了。

五.动态升级方案

React Native本身并没有动态升级相关的管理类,但由于React Native使用Javascript进行构架,使得动态升级变的很方便;

关键步骤为:

1. 检查某页面对应JS是否有更新

2. 如果有更新,Native代码则进行下载

3. 下载完毕后,覆盖老版本JS

4. 重新从JS初始化RCTRootView,并加入到界面中

5. 完成升级

六.大模块升级开发成本

目前来看,React Native中提供基础的UI控件、动画、HTTP/HTTPS请求、socket、持久化等组件,理论上来讲一个模块或界面包含的所有内容,都可以使用React Native书写并完成升级。

相关的工作量包括:

  1. 使用JS开发React Native
  2. React Native与Native代码结合
  3. 跨平台、性能等方面的测试
  4. 自动升级功能的测试

七.对安卓的支持程度

React Native支持Android4.1及以上,iOS7.0及以上系统

八.使用难度

1.需要有JS语言基础

2.需要对React有基本概念,如JSX、components、state和props

3.对于一个JS工程师,门槛是比较低的

九.总结

 优势:

1. 一定程度的跨平台,一些组件在不同平台还是有着细微差异;

2. 提供了相对丰富的组件,包括UI控件、动画、HTTP/HTTPS请求、socket、持久化等等组件;

3. 有相对成熟的升级方案;

4. 对于APP体积影响不大。

 劣势:

1. React Native并不像JSPatch、WaxPatch等提供脚本语言到Native代码的一对一的映射关系,它只是提供了一系列组件,在构建复杂界面时会存在一些困难;

2. 性能方面不如Native代码,在多层页面叠加时可能会出现明显性能问题;

3. 需要学习JS语言。

十.参考资料

https://facebook.github.io/react-native/docs/tutorial.html

http://blog.csdn.net/linshaolie/article/details/50961955  React Native的动态更新方案

http://www.tuicool.com/articles/BJ7JbaY    用React Native实现动画

http://blog.csdn.net/u010046908/article/details/50916511  使用React Native进行HTTP请求

http://facebook.github.io/react-native/docs/integration-with-existing-apps.html 在已有native app中集成React Native页面

http://www.tuicool.com/articles/biUNriA    React Native性能相关

 

ReactNative调研结果的更多相关文章

  1. reactnative调研

    /**   * This function parses the exported methods inside RCTBridgeModules and   * generates an array ...

  2. React-Native转小程序调研报告:Taro & Alita

    一. 我们的要求 期望的要求 基于React语法,将RN项目转化为小程序项目 该小程序能同时在 微信小程序 和 支付宝小程序这两个平台运行 底线要求 底线是能转成微信小程序,因为目前来说,因为微信先发 ...

  3. react-native技术调研:react-native是什么?

    如有疏漏错误,还望指正.转载不忘加上>>原链接<<哦~ react-native是什么? react-native原理 从字面意思上来看,react-native由单词reac ...

  4. 在 ReactNative 的 App 中,集成 Bugly 你会遇到的一些坑

    一.前言 最近开新项目,准备尝试一下 ReactNative,所以前期做了一些调研工作,ReactNative 的优点非常的明显,可以做到跨平台,除了少部分 UI 效果可能需要对不同的平台进行单独适配 ...

  5. react-native中使用Echarts,自己使用WebView封装Echarts经验

    1.工作中遇到的问题 我们在使用react-native肯定遇到过各种奇葩的问题,比如引入Echarts时候莫名报错,但是Echarts官网明显告诉我们可以懒加载的,这是因为基本上js大部分原生的组件 ...

  6. React-Native WebView动态加载字体

    背景 使用react-native构建的iOS/Android双端APP,通过WebView加载本地页面,需要根据服务器提供的字体列表实现下载和动态加载. 本地字体检查 有些字体手机操作系统已经提供了 ...

  7. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  8. ReactNative入门 —— 动画篇(上)

    在不使用任何RN动画相关API的时候,我们会想到一种非常粗暴的方式来实现我们希望的动画效果——通过修改state来不断得改变视图上的样式. 我们来个简单的示例: var AwesomeProject ...

  9. ReactNative入门(安卓)——API(下)

    LayoutAnimation - layout动画 当布局发生改变时的动画模块,它有两个方法: 1. 最常用的方法是 LayoutAnimation.configureNext(conf<Ob ...

随机推荐

  1. 使用C语言实现一个自动刷弹幕的程序

    本文使用两种方式来进行刷弹幕操作 1 模拟键盘输入,自动输入文字,然后点击回车. 2 操作剪切板,直接将剪切板的文字粘贴到输入框,然后回车. 模拟键盘输入 如果要输入"弹幕"这两个 ...

  2. CSS box-sizing属性

    全文摘抄自 https://developer.mozilla.org/zh-CN/docs/Web/CSS/box-sizing 专门抄一遍是因为,我想当然的以为标准盒子模型设置的宽高是包括padd ...

  3. 【shiro】(5)---基于Shiro的权限管理

    基于Shiro的权限管理项目搭建 前面写了四篇有关权限的文章,算是这篇文章的铺垫了.这篇文章采用 开发环境           JDK1.8          Eclipse          Mav ...

  4. 利用 ELK 搭建 Docker 容器化应用日志中心

    利用 ELK 搭建 Docker 容器化应用日志中心 概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 ...

  5. mysql 开发基础系列18 存储过程和函数(下)

    1. 光标的使用(游标) 在存储过程和函数中可以使用光标对结果集进行循环的处理,光标使用包括光标的声明,open ,fetch,close. 下面在存储过程中使用一个光标, 这个举例中光标里的逻辑不重 ...

  6. Android--UI之ProgressBar

    前言 开门见山,开篇明意.这篇博客主要讲解一下Android中ProgressBar控件以及间接继承它的两个子控件SeekBar.RatingBar的基本用法,因为其有继承关系,存在一些共有特性,所以 ...

  7. Tomcat中server.xml配置详解(2)

    Tomcat中配置文件详解 Server.xml配置文件说明,以及Tomcat组件的说明 Tomcat服务器是由一系列可以配置的组件构成,其中核心组件是Catalina Servlet,它是最顶层组件 ...

  8. 微信小程序-canvas绘制文字实现自动换行

    在使用微信小程序canvas绘制文字时,时常会遇到这样的问题:因为canvasContext.fillText参数为 我们只能设置文本的最大宽度,这就产生一定的了问题.如果我们绘制的文本长度不确定或者 ...

  9. 项目ITP(二) 二维码 拿起你的手机装一装,扫一扫 【每日一搏】

    前言 系列文章:[传送门] 五一,期待的两天假期.我的生日,happy. [吐槽] 学校真恶心,半月前让我给他搞个东西,md,课题不加人.后来又来求,说钱(钱,咱不需要:我猜也不多).到现在,又来了, ...

  10. Elasticsearch实践(四):IK分词

    环境:Elasticsearch 6.2.4 + Kibana 6.2.4 + ik 6.2.4 Elasticsearch默认也能对中文进行分词. 我们先来看看自带的中文分词效果: curl -XG ...