现阶段,在移动开发中,原生(Native)虽然开发成本很高,但是仍然是必须的,因为Web App的用户体验仍无法超越原生; 原生(Native)APP开发的优势:

  1. Native的原生控件有更好的体验;
  2. Native有更好的手势识别;
  3. Native有更合适的线程模型,尽管Web Worker可以解决一部分问题,但如图像解码、文本渲染仍无法多线程渲染,这影响了Web的流畅性.

一: 什么是React Native?

React Native是Facebook在F8大会开源的JavaScript框架,(2015年9月15日发布)可以让广大开发者使用JavaScript和React开发跨平台的移动应用.在短短不到一年的时间里,它成为手机端必不可少的开发模式之一。 它充分利用了Facebook现有的业务轮子, 其核心设计理念:既拥有Native的用户体验、又保留React的开发效率,目前,React Native基本完成了对多端的支持,实现了真正意义上的面向配置开发: 开发者可以灵活的使用HTML和CSS布局,使用React语法构建组件,实现:Android, iOS 两端代码的复用,核心设计理念: 既拥有Native的用户体验,又保留React的开发效率.

二: React Native的特点:

  1. 使用了 Virtual DOM(虚拟DOM)
  2. 提供了响应式(Reactive)和组件化(Composable)的视图组件
  3. 将注意力集中保持在核心库,伴随于此,有配套的路由和负责处理全局状态管理的库.

三: React Native的优势:

1. 跨平台开发

运用React Native,我们可以使用同一份业务逻辑核心代码来创建原生应用运行在Web端,Android端和iOS端;

2. 追求极致的用户体验

实时热部署

3. learn once,write everywhere

4. 社区活跃,除了Facebook之外,GitHub上有很多第三方的团队、个人、公司开发贡献了很多非常优秀的第三方组件,它的社区是非常健康、非常活跃的。

React Native不强求一份原生代码支持多个平台,Java的是(Write once, run anywhere)

React Native的劣势:

1. RN框架原生并不支持Web端;

2. RN框架官方并不支持热更新;

3. Facebook给出的官方RN API不能完全满足业务快速的发展,它只给了一些很基础的API,但业务中经常会用到的一些多媒体,比如录音、录像、视频播放文件以及文件上传、压缩、加密等等,这些都没有提供。

4. 尽管RN框架性能非常不错,比H5好很多。实际上经过真正的业务开发后,发现90%的场景下RN的性能非常棒,可以满足我们的业务需求;但是在另外的10%的场景下,特别是一些交互非常复杂、页面非常复杂、需要频繁的更新、需要一些手势交互的场景,RN仍有些内存跟性能的瓶颈。

4. 以下是react-native 原理图



四: React Native开发注意事项:

1.最新版的React Native仅支持iOS 8.0 以上, Android仅支持Android 4.1 以上的版本

2.初学者建议选择:

  • 功能适中,交互一般,不需要特别多的系统原生支持;
  • 对于部分复杂的应用,可以考虑原生+React Native混合开发

github地址: https://github.com/facebook/react-native

英文官方文档: http://facebook.github.io/react-native/docs/getting-started.html

中文文档: https://reactnative.cn/

三端解决方案

蚂蚁金服: https://mobile.ant.design/index-cn