# 1、概述
- 分析结论:
可以尝试做一些UI界面、尽量减少调用底层API的需求。相比纯H5的页面功能体验好了不少。
优点
- 1、开发迅速
- 2、支持热更新
不足与风险:
调用原生API的不流畅(诸如wifi、蓝牙、GPS、NFC)
对于项目中使用一些如分享,推送等主流的第三方文件,对于react Native基本上不支持
更新麻烦
# 2、性能体验与关键指标分析
首次打开需要加载 jsBundle,会有好几秒的白屏时间,后面再打开也会有1秒左右的白屏时间,而且可以看到背景图片的渲染会比二维码略慢一点,不过这些应该是有优化空间的,而且在打开的瞬间,可以看到app的启动反应也是很快的。
# 内存
从上面的内存占用来看,并不会因为使用 React Native 而导致内存占用过多,而是在正常范围内。
# CPU
由于demo做了简单的UI界面,没有什么复杂操作,CPU并没有什么波动。
# APK大小
原生应用大小:2M RN应用:8M React Native 里面为了兼容,加载了 armeabi-v7a 和 x86 的 so 包,当去掉 x86 的 so 包之后,RN绑定号 apk 大小减少到 4509KB
# 热更新
目前 React Native 的热更新方案有微软的 CodePush 和 reactnative中文网的 react-native-pushy,但是这些方案都是使用它们的服务器,不可控,因此需要搭建自己的热更新服务器。
热更新方案也有全量和增量,全量热更新实现起来比较简单,省时省力;增量热更新实现起来比较复杂,省流量,用户体验会更好。
React Native 的热更新就是更新 JsBundle 文件,更新的步骤如下:
# 其他问题
- 启动白屏的问题
- 封装基础API:埋点、网络请求、获取基础数据
- 动画、列表、桥接调用API耗时、复杂界面刷新、常规组件性能测试