ReactNative从开源以来就受到国内各大互联网公司的关注,阿里巴巴在应用ReactNative的同时,也推出了自己的Weex方案。
同时在网络上可以看到一些文章,携程、去哪儿也都在ReactNative的基础上开发了自己的ReactNative平台框架。
在这里对比一下去哪儿、携程、以及内部的ReactNative框架还有Weex框架。
其实个人认为RN还有Weex的最大优点一是代码可以在IOS、Android平台公用(其实以公司维护以及开发的学习成本来说,这个优点并不明显),另外最大的亮点是可以热更新,也就是不依赖发版。
更新的方案设计是非常重要的,阿里巴巴的Weex应该是通过推拉结合,技术实现较复杂;去哪儿是差分更新,维护性较差;Moles是按需加载,比较简单;而我认为最优的升级方案是
1.按需加载,通过类似WebView加载升级的方式实现,去除版本概念,通过客户端请求版本时加入随机哈希来实现版本比对,下载;
2.按需加载后,如果线上hash和本地hash一致,则使用本地缓存,“一次加载、多次可用”;
3.必须要监控升级下载成功率!因为客户端升级过程是黑盒,开发者很难知道用户究竟本次下载是否成功,所以建议在下载过程中加入埋点,进行全链路监控。
框架 | 引擎 | 三端支持 | 预加载 | 调试难度 | 升级方式 | 业务使用广泛性 | 组件Api支持 |
内部React | JSCore | 支持 | 支持 | 中 | 强制、非强制 | 中 | 有 |
QunarReact | JSCore | 支持 | 支持 | 中 | 差分更新 | 高 | 有 |
Moles | JSCore | 支持 | NA | 中 | 按需加载 | 中 | 有 |
Weex | V8 | 支持 | 支持 | 低 | 推拉结合 | 高 | 好 |
框架 | ListView优化 | 智能埋点 | 图标字体支持 | 拆分包支持 | 离线资源包支持 | 开源 | 升级成功率统计方案 |
内部React | 无 | 无 | 无 | 支持 | NA | 无 | 支持 |
QunarReact | 有 | 支持 | 支持 | 支持 | 支持 | 部分开源 | NA |
Moles | NA | 无 | NA | 支持 | 支持 | 部分开源 | NA |
Weex | 有 | NA | 支持 | NA | 支持 | 开源 | 支持 |