本文由 简悦 SimpRead转码,原文地址 www.callstack.com
将您的应用程序升级到最新版本,以获得更多功能和更好的支持。
以下文章是React Native 优化终极指南的一部分,介绍了在开发应用程序时始终使用最新版本的 Rect Native 有多么重要。
为什么重要?
移动应用市场是动态的,如果您想让用户满意,就必须关注产品的最新升级。这适用于应用程序中使用的库和框架。让您的数字产品保持最新数据不仅能提高其性能或安全性,还能帮助您适应 iOS 和 Android 的最新底层变化。它让您确信,用户可以在每台设备上运行您的应用程序,而不会出现崩溃。在本文中,您将了解为什么升级到最新的 React Native 版本是个好主意、如何升级以及它能为您的业务带来哪些好处。
在基于《React Native 优化终极指南》的其他博文中,我们将讨论以下与性能相关的主题:
- 使用 Gradle 设置优化 Android 应用程序的大小
- 使用 Hermes 优化 Android 应用程序的启动时间
- 使用 "Autolinking "自动管理依赖关系
- 使用 Flipper 更快更好地进行调试
- 使用 React Native 的新架构进行实验
查看这些内容!现在,让我们进入正题。
为什么要始终运行最新的 React Native 版本?
让您的应用程序与您使用的框架保持同步至关重要。因此,您应该订阅最新的功能、性能改进和安全修复。JavaScript 生态系统在这方面尤其有趣,因为它的发展速度非常快。如果您不定期更新您的应用程序,您的代码很有可能会落后太多,以至于升级起来既痛苦又有风险。
每天,来自世界各地的开发人员都会推出新功能、重要错误修复和安全补丁。平均而言,每个版本都包含约 500 次提交。多年来,得益于开源贡献者 和 Meta 致力于改善生态系统,React Native 取得了长足的发展。React Native 在发布过程中引入的一些重要功能包括快速刷新、自动链接、Flipper、LogBox、Hermes 和 新架构。
在 React Native 生态系统中,库不具有向后兼容性是很常见的。新功能通常会使用以前版本框架中没有的好东西。这意味着,如果您的应用程序运行在较旧的 React Native 版本上,您最终将错过最近的改进。这正是跟上 React Native 最新升级似乎是唯一选择的原因。
让您的应用程序跟上最新的 React Native 版本所面临的挑战
不幸的是,每发布一个新版本,都需要对 React Native 代码进行认真的升级。其工作量取决于对原生功能和核心部分的底层更改的数量。大多数情况下,你必须仔细分析并对比你的项目与最新版本,然后自行进行调整。 如果你对在原生环境中移动已经驾轻就熟,那么这项任务就会变得简单一些。但如果你和我们大多数人一样,这项工作可能会更具挑战性。
例如,你在代码中使用的模块和组件可能不再是 react-native 核心的一部分。这是因为 Facebook 在一个名为精益核心的过程中引入了一些变化。这项工作的目标是
- 通过提取部分内核并将其转移到 react-native-community 仓库,使 react-native 包更小、更灵活、更易于维护
- 将提取模块的维护工作移交给社区
这一过程加速了特定模块的发展,使整个生态系统变得更加有序。但这也给 react-native 升级带来了一些负面影响。现在,您必须将提取的软件包作为额外的依赖关系进行安装,而在安装之前,您的应用程序将无法编译或在运行时崩溃。不过,从开发人员的角度来看,迁移到社区软件包通常只是引入一个新的依赖关系和重写导入而已。
另一个问题是第三方支持。您的代码通常依赖于外部库,而这些库也有可能与最新的 React Native 版本不兼容。
解决这个问题至少有两种方法:
- 等待项目维护人员在升级前进行必要的调整、
- 使用名为 patch-package 的便捷工具,或创建一个包含必要修复的临时分叉,来寻找替代方案或自行修补模块。
运行在旧版本上意味着会出现发货问题
如果您使用的是旧版本,您很可能会落后于使用最新版本框架的竞争对手。
React Native 框架的修复、改进和进步的数量确实令人印象深刻。如果你还在玩追赶游戏,你就会错过许多更新,而这些更新会让你的生活变得更轻松。此外,定期升级所涉及的工作量和成本总是会被即时的 DX(开发人员体验)提升所抵消。
如何逐步升级到最新的 React Native 版本
将 React Native 升级到当前版本可能不是世界上最简单的事情,但有一些工具可以简化这一过程,并解决大部分问题。实际工作量将取决于更改的数量和您的基础版本。不过,本节介绍的步骤适用于每次升级,无论应用程序处于何种状态。
准备 React Native 版本升级
React Native Upgrade Helper是一个很好的开始。从高层次上讲,它可以让你概览自上次升级本地版本以来框架所发生的变化。
为此,该助手会比较通过运行 npx react-native init 创建的裸 React Native 项目与你的版本和你正在升级的版本。接下来,它会显示项目之间的差异,让你了解在此期间发生的每一点修改。有些修改可能会附加特殊信息注释,以提供更多背景信息,说明为什么会发生这样的事情。
对用户文件中更多有趣更改的补充说明
对变更有一个更全面的了解,将有助于您更快地行动,并更有信心地采取行动。
注:掌握更多的上下文非常重要,因为在升级时没有任何自动化措施,您必须自己应用更改。
React Native Upgrade Helper 还会建议您在升级时阅读有用的内容。在大多数情况下,其中包括 React Native 博客上发布的专门博文以及原始更新日志。
升级到较新的 React Native 版本时需要阅读的有用内容
我们建议您阅读推荐的资源,以便更好地掌握即将发布的版本并了解其亮点。这样,您不仅能了解到这些变化,还能理解其背后的原因。然后,您就可以打开您的项目并开始工作了。
应用 JavaScript 更改
升级 React Native JavaScript 部分的过程与升级其他 JavaScript 框架类似。我们的建议是一步一步地执行升级--一次升级一个库。根据经验,一旦升级了一个库,就将此时的工作保存在提交中,然后继续升级下一个库。在我们看来,这种方法比一次性升级所有库要好,因为它能给你更多的控制权,也更容易捕捉回归。
第一步是将 React 和 React Native 的依赖关系提升到所需的版本,并执行必要的更改(包括破坏性更改)。为此,您可以查看 React Native Upgrade Helper 提供的建议,并手动应用它们。完成后,确保重新安装 node_modules。
注意:在执行升级时,您可能会看到 iOS 项目文件(.xcodeproj 中的所有内容,包括 .pbxproj)中出现大量更改。这些文件是 Xcode 在您处理 React Native 应用程序的 iOS 部分时生成的。与其修改源文件,不如通过 Xcode UI 执行更改。
升级到 React Native 0.60 时就是这种情况,相应的操作在 本期。 中有所描述。
最后,您应该尝试运行应用程序。如果一切正常--那就完美了。升级很顺利,今天就到此为止吧!不过,更重要的是,现在你应该检查一下你使用的其他依赖项是否有更新的版本!它们可能会提供重要的性能改进。
不幸的是,还有另一种更悲观的情况。您的应用程序可能根本无法运行,或者立即崩溃并出现红屏。在这种情况下,很可能是你的某些第三方依赖项无法正常工作,你需要让它们与你的 React Native 版本兼容。
如果您在升级时遇到问题,可以查看 Upgrade Support 项目。这是一个开发人员分享经验并互相帮助解决与升级相关的一些最具挑战性操作的资源库。
升级第三方库
在大多数情况下,您应该首先查看 React Native 的依赖关系。与普通的 JavaScript/React 包不同,它们通常依赖于原生构建系统和更高级的 React Native API。随着框架逐渐成熟,API 也越来越稳定,这就会使它们面临潜在的错误。
如果错误发生在构建过程中,只需将依赖关系提升到最新版本就能正常工作。但情况并非总是如此。要确保您升级到的 React Native 版本与您的依赖关系兼容,请使用微软开发人员的 align-deps 项目。它允许你根据需求并利用预设规则,将依赖关系保持在正确的版本上。它还有一个 CLI,因此你可以将它连接到你的 CI,确保你的 repo 或 monorepo 中的任何人都不会无意中引入不兼容版本的软件包,从而破坏应用程序。
应用程序构建完成后,您就可以检查更新日志,熟悉公共 API 的 JavaScript 变动。这一步很容易被忽略,而且经常会导致运行时异常。使用 Flow或 TypeScript应能保证正确应用更改。
正如你所看到的,并没有什么神奇的窍门可以修复所有错误并自动升级依赖关系。这主要是一项手动工作,需要耐心和专注。此外,还需要进行大量测试,以确保没有破坏任何功能。幸运的是,像 align-deps 这样的工具至少可以帮你避免一些手动工作,大大改善升级体验。
运行最新的 React Native 版本意味着更多功能和更好的支持
升级到当前的 React Native 版本与保持其他框架和库的更新并无不同。除了关键的性能和安全性改进之外,新发布的 React Native 还能解决 iOS 和 Android 的最新底层变更。这包括适用于手机的突破性变化,例如某些 API 被弃用。
这里有一个例子:2019 年,谷歌宣布所有 2019 年 8 月 1 日之后提交到 Google Play 的 Android 应用程序都必须是 64 位。为了继续开发应用程序并发布新功能,您必须升级到 React Native 0.59 并进行必要的调整。
要让用户满意,这样的升级确实至关重要。毕竟,如果应用程序在较新版本的操作系统下开始崩溃或从 App Store 上消失,他们会很失望。每次发布可能都会带来一些额外的工作量,但与时俱进会让用户更满意,应用程序更稳定,开发体验更好。
需要帮助开发应用程序吗?
我们的React Native 开发服务 已帮助数十家客户将其业务提升到新的水平。无论是从头开始开发、添加新功能还是性能优化,我们都能帮您实现。