跳至主要内容

帮助将 React Native 库迁移到新架构

·阅读时长 6 分钟
Riccardo Cipolleschi
Riccardo Cipolleschi
Meta 软件工程师

tl; dr:我们正在努力改进支持 React Native 新架构的资源。我们已经发布了一个仓库来帮助您迁移您的应用(RNNewArchitectureApp)和一个用于您的库的仓库(RNNewArchitectureLibraries)。我们还在网站上改进新架构指南,并创建了一个GitHub 工作组来解答与新架构相关的问题。

简介

在这篇文章中,我们分享了有关工具和资源的更新,以帮助您将您的原生模块原生组件迁移到其新架构等效项TurboModuleFabric 组件

React Native 用户利用大量开源库来构建应用程序。为了构建一个完整且一致的生态系统,这些库必须迁移,以便每个人都能从新架构解锁的功能和性能改进中受益。

以下是我们正在努力支持库开发者迁移到新架构的内容

  • 文档:我们正在扩展网站上的新架构指南,以涵盖更多新架构的概念以及如何开发组件。
  • 示例迁移:我们已经设置了两个仓库来演示如何将 React Native 应用迁移到新架构(RNNewArchitectureApp)以及如何创建一个与两种架构都兼容的Fabric 组件TurboModuleRNNewArchitectureLibraries)。
  • 支持:今年早些时候,我们创建了一个GitHub 工作组,专门用于围绕新架构进行讨论和解答问题。

在这篇文章中,我们将更深入地探讨这些资源,并更详细地解释如何最有效地使用它们。最后,我们将提供最常用的 React Native 库的当前迁移状态快照。

文档

在过去的 6 个月里,我们添加了采用新架构的指南Fabric 的架构深入探讨。我们计划将其扩展到包括更多指南和文档,内容涉及创建 TurboModules、了解 CodeGen 等。我们计划在 0.70 版本发布时分享更新。

目前,新架构指南涵盖了如何迁移您的应用您的库以正确支持新架构。

如果您对本指南的演变感兴趣,或者有任何反馈,可以关注拉取请求。

示例迁移

对于可能希望在代码中跟随的开发者,我们准备了两个示例仓库。

RNNewArchitectureApp

此仓库旨在演示如何将应用、原生模块和原生组件从 React Native 0.67 版本的旧架构迁移到新架构以及 React Native 的最新版本。每个提交对应于一个独立的迁移步骤。

Example steps to migrate an app
RNNewArchitectureApp 仓库中迁移的提交列表

仓库的组织结构如下

  • main 分支没有代码,但有一个 README.md 文件,用于宣传其他分支。
  • 多个迁移分支,展示了从特定版本的 RN 到另一个版本的迁移。

一些迁移分支还包含一个RUN.md文件,以更易于人类阅读的方式描述每个提交中应用的确切步骤。

我们计划使此示例与最新的稳定版本保持同步,并在我们即将发布的任何 React Native 次要版本中添加迁移。如果您注意到任何步骤存在问题,请在仓库中提交问题。这将持续到我们有合理的信心认为大多数 React Native 用户已经迁移到新架构。

RNNewArchitectureLibraries

同样,此仓库提供了有关如何创建TurboModuleFabric 组件的分步指南。它专注于确保新架构和旧架构之间的向后兼容性。

此仓库的组织方式与上一个类似

  • main 分支没有代码,但有一个 README.md 文件,用于宣传其他分支。
  • 其他分支展示了如何开发TurboModulesFabric 组件

我们计划使此示例更新到 React Native 的新版本,特别是影响库开发的版本,并添加更多有关如何使用高级功能的示例(例如:实现命令、事件发射器、自定义状态)。如果您发现错误,请在示例仓库中提交问题。

支持

我们创建了一个专门的工作组,为社区提供一个提问和获取有关新架构更新的空间。如果您是库维护者,这是一个宝贵的资源,可以找到问题的答案,并让我们了解您的需求。要加入,请按照这些说明操作。欢迎所有人加入。

此工作组被组织成几个部分

  • 公告:分享 RN 新架构推广的里程碑和重大更新的地方
  • 深入探讨:讨论深入探讨和技术特定主题的地方
  • 文档: 用于讨论新架构文档和迁移资料的场所
  • : 用于讨论第三方库及其迁移到新架构的故事的场所
  • 问答: 用于向社区寻求有关新架构主题帮助的场所
  • 版本: 用于讨论版本特定错误和构建问题的场所

有效利用本小组

  • 确保您的库已列在部分。这将有助于我们分享您的库迁移状态更新,并帮助我们了解库作者在支持您方面面临哪些挑战。
  • 如果您遇到阻碍并需要支持,请利用问答部分。我们的团队和社区专家会持续关注并尽力提供支持。
  • 关注其他部分中可能影响您的主题。新的版本可能会引入您一直在寻找的 API。您可以通过 GitHub 订阅特定讨论。

我们计划支持本小组,直到新架构默认启用且所有主要库都已迁移到它为止。

库维护者已在工作组中与我们分享了他们的迁移工作状态,我们想为您提供一个快速概览

后续步骤

我们致力于支持 React Native 社区采用新架构。具体来说,我们将继续

  • 工作组中提供尽力支持。
  • RNNewArchitecture存储库中提供更多关于如何利用新架构获得出色成果的示例。
  • 提供关于新架构的清晰且最新的文档。
  • 工作组中跟踪基本 React Native 库的迁移状态。
  • 简化开发人员的迁移路径

此外,React Native 0.69 将为应用和库开发人员提供改进的开发体验,以促进新架构的采用。您可以此处找到有关 0.69.0 版本的更多信息。

我们对将与新架构一起构建的内容感到兴奋!