ReactNative调研结果
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书写并完成升级。
相关的工作量包括:
- 使用JS开发React Native
- React Native与Native代码结合
- 跨平台、性能等方面的测试
- 自动升级功能的测试
七.对安卓的支持程度
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调研结果的更多相关文章
- reactnative调研
/** * This function parses the exported methods inside RCTBridgeModules and * generates an array ...
- React-Native转小程序调研报告:Taro & Alita
一. 我们的要求 期望的要求 基于React语法,将RN项目转化为小程序项目 该小程序能同时在 微信小程序 和 支付宝小程序这两个平台运行 底线要求 底线是能转成微信小程序,因为目前来说,因为微信先发 ...
- react-native技术调研:react-native是什么?
如有疏漏错误,还望指正.转载不忘加上>>原链接<<哦~ react-native是什么? react-native原理 从字面意思上来看,react-native由单词reac ...
- 在 ReactNative 的 App 中,集成 Bugly 你会遇到的一些坑
一.前言 最近开新项目,准备尝试一下 ReactNative,所以前期做了一些调研工作,ReactNative 的优点非常的明显,可以做到跨平台,除了少部分 UI 效果可能需要对不同的平台进行单独适配 ...
- react-native中使用Echarts,自己使用WebView封装Echarts经验
1.工作中遇到的问题 我们在使用react-native肯定遇到过各种奇葩的问题,比如引入Echarts时候莫名报错,但是Echarts官网明显告诉我们可以懒加载的,这是因为基本上js大部分原生的组件 ...
- React-Native WebView动态加载字体
背景 使用react-native构建的iOS/Android双端APP,通过WebView加载本地页面,需要根据服务器提供的字体列表实现下载和动态加载. 本地字体检查 有些字体手机操作系统已经提供了 ...
- CMS模板应用调研问卷
截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...
- ReactNative入门 —— 动画篇(上)
在不使用任何RN动画相关API的时候,我们会想到一种非常粗暴的方式来实现我们希望的动画效果——通过修改state来不断得改变视图上的样式. 我们来个简单的示例: var AwesomeProject ...
- ReactNative入门(安卓)——API(下)
LayoutAnimation - layout动画 当布局发生改变时的动画模块,它有两个方法: 1. 最常用的方法是 LayoutAnimation.configureNext(conf<Ob ...
随机推荐
- 【PHP篇】面向对象基础
1.声明:class 类名{ //成员属性(变量) 修饰符 $变量名=初值: //成员方法(函数) 修饰符 function 函数名(){ 执行:} } 2.生成类对象:$对象名=new 类名():/ ...
- Python编程Day5——可变与不可变类型、数据类型整合
一.可变与不可变类型1.可变类原值型:只改变,但id不变,证明就是在改变原值,是可变类型2.不可变类型:值改变,但id也跟着改变,证明是产生了新的值,是不可变类型 x= print(id(x)) x= ...
- nginx介绍(二) 架构篇
2. nginx架构总览 传统的基于进程或者基于线程的模型处理并发的方式都是为每个连接单独创建一个处理进程或线程,会在网络传输或者I/O操作上阻塞.而这对应用来说,在内存和 CPU的使用上效率都是非常 ...
- mysql 开发进阶篇系列 13 锁问题(关于表锁,死锁示例,锁等待设置)
一. 什么时候使用表锁 对于INNODB表,在绝大部分情况下都应该使用行锁.在个别特殊事务中,可以考虑使用表锁(建议). 1. 事务需要更新大部份或全部数据,表又比较大,默认的行锁不仅使这个事务执行效 ...
- Android--UI之Button
前言 最近一直在讲androidUI控件的使用方式,这篇博客讲解一下基本上属于用处最广泛的控件之一的Button控件.如果有过其他平台开发经验的程序员,对按钮是不会陌生的.本篇博客首先讲解一下Andr ...
- 发福利了!!超过100本的linux免费书籍
New Books Kindle Fire App Development Essentials iPhone iOS 6 Development Essentials CentOS 6 Essent ...
- shiro + jwt 实现 请求头中的 rememberMe 时间限制功能
前言: 上一篇提出, 通过修改 rememberMe 的编码来实现 rememberMe的功能的设想, 事后我去尝试实现了一番, 发现太麻烦, 还是不要那么做吧. 程序还是要越简单越好. 那功能总是要 ...
- Java 容器源码分析之 LinkedHashMap
同 HashMap 一样,LinkedHashMap 也是对 Map 接口的一种基于链表和哈希表的实现.实际上, LinkedHashMap 是 HashMap 的子类,其扩展了 HashMap 增加 ...
- Keras 构建DNN 对用户名检测判断是否为非法用户名(从数据预处理到模型在线预测)
一. 数据集的准备与预处理 1 . 收集dataset (大量用户名--包含正常用户名与非法用户名) 包含两个txt文件 legal_name.txt ilegal_name.txt. 如下图所 ...
- Java中的instanceof和isInstance基础讲解
1. instanceof 是一个操作符 使用方法: ? 1 2 if(a instanceof B){ } 表示:a 是不是 B 这种类型 2. isInstance是Class类的一个方法 ? 1 ...