去哪儿网 QRN 兼容升级方案

1 前言

React Native 0.63 已经发布,为我们带来了一些非常令人兴奋的新功能的同时,也让人头疼的,因为升级它并不是那么容易。

尤其是遇到大版本更新,JavaScript、iOS 和 Android 三端的配置构建文件都有非常大的变动,有时候三者的配置文件又互相耦合在一起,往往牵一发而动全身。

如果还想做完美兼容旧版升级,那更是难上加难啊。去哪儿刚刚结束 0.63 的升级, 这里就来分享下升级的过程吧。

2 QRN 是什么?

react-native 目前是去哪儿网跨端最佳方案,已是去哪儿网客户端的主要技术栈. qrn-js 是在 react-native 基础上开发的一个专属于去哪儿的 rn 框架。

qrn 的核心功能包括但不限于对 rn 原生的代码修改加工,兼容双端的组件和 api,自定义的组件和 api 等。

同时也支持 Redux,webx 等功能。QRN 现可支持全业务线开发,已成为去哪儿大前端的关键一环。

在业务线如此繁多的情况下,为了业务之间解耦,我们将 JS 端划分成 N 个业务包和一个框架包,业务包和框架包有各自的打包脚本,每个业务包也都可以独立发布。
在这里插入图片描述
一个完整的 js 环境都是由各个业务线的业务包加框架包组成,互不干扰。但是如果每一个业务包都依赖不同版本的 qrn-js,这就会产生多份重复的 qrn-js 代码。

为了防止这种情况的发生,我们将 qrn-js 内置的到客户端中,跟随客户端版本发布。当启动一个项目时,客户端会先加载内置的 qrn-js,然后再加载业务 js。

这样业务包内就可以没有任何 qrn-js 代码了。
在这里插入图片描述

3 为什么这么麻烦还有更新?

为什么要定期更新 React Native?主要如下:

  • 可以获得所有最新的性能改进
  • 提高健壮性和稳定性
  • 可以使用新的 API 和功能
  • 紧跟最新的重大变化

考虑到这些,还是有必要定期更新的。下面看下这次我们兼容升级的主要过程吧:

4 更新内容

我们先是通过翻阅61到63所有版本的更新日志和 commit,将其收集归类,再经过评估后,整理出本次升级需要着重关注的更新。以此来确定更新影响范围和制定兼容方案。我们将内容整理到 wiki 上,也可让各业务线开发快速了解更新内容。

这里就挑了几个更新拆解说明一下。

提高开发调试效率

全新的错误提示框 LogBox 这个新的 Logbox 的体验要比之前的好上很多,之前的调用栈很难读,基本上都是靠错误信息来分析错是什么。特别是组件内报错,因为没有页面栈,经常要花上好一会时间来定位。

在新的 Logbox 中得到了很好的改善,如果是组件内报错 l

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值