跳到主要内容

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

·8 分钟阅读
Riccardo Cipolleschi
Riccardo Cipolleschi
Meta 软件工程师

一句话总结:我们正在努力改进支持 React Native 新架构的资源。我们已经发布了一个仓库来帮助迁移你的应用 (RNNewArchitectureApp),以及一个用于你的库 (RNNewArchitectureLibraries)。我们还在重新设计网站上的新架构指南,并创建了一个GitHub 工作组来回答与新架构相关的问题。

引言

在这篇文章中,我们将分享工具和资源的更新,以帮助你将 **原生模块 (Native Modules)** 和 **原生组件 (Native Components)** 迁移到它们在**新架构 (New Architecture)** 中的对应物,即 **TurboModule** 和 **Fabric 组件 (Fabric Components)**。

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

以下是我们为支持库开发者迁移到新架构所做的工作:

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

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

文档

在过去的 6 个月中,我们添加了关于采用新架构的指南和关于 Fabric 的架构深度剖析。我们计划扩展此内容,以包含更多关于创建 TurboModule、理解 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 次要版本添加迁移。如果你发现任何步骤有问题,请在仓库中提交一个 issue。这将持续到我们合理地认为大多数 React Native 用户已迁移到新架构为止。

RNNewArchitectureLibraries

类似地,此仓库提供了关于如何创建 **TurboModule** 和 **Fabric 组件** 的分步指南。它着重于确保新架构与旧架构之间的向后兼容性。

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

  • 一个 **main** 分支没有代码,但有一个 README.md 文件,其中介绍了其他分支。
  • 其他分支用于展示如何开发 **TurboModules** 和 **Fabric 组件**。

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

支持

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

工作组分为几个部分:

  • 公告:分享 RN 新架构推出里程碑和重要更新的地方
  • 深入探讨:讨论深度剖析和特定技术话题的地方
  • 文档:讨论新架构文档和迁移材料的地方
  • :讨论第三方库及其向新架构迁移的故事的地方
  • 问答:向社区寻求新架构相关帮助的地方
  • 发布:讨论特定版本错误和构建问题的地方

有效使用此工作组:

  • **确保你的库在“”部分中列出**。这将帮助我们分享你库的迁移状态更新,并帮助我们了解库作者面临哪些困难,以便更好地支持你。
  • **如果你遇到障碍并需要支持,请利用问答部分**。我们的团队和社区专家正在监控并会尽最大努力提供支持。
  • **关注其他部分,了解可能影响你的主题**。新版本可能会引入你正在寻找的 API。你可以通过 GitHub 订阅特定讨论。

我们计划支持这个工作组,直到**新架构**默认启用,并且所有主要库都已迁移到它。

库维护者一直在工作组中与我们分享他们的迁移工作状态,我们希望为你提供一个快速概览:

下一步

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

  • 在**工作组**中提供最大努力的支持。
  • 在 **RNNewArchitecture** 仓库中提供更多关于如何通过新架构实现出色成果的示例。
  • 提供关于**新架构**清晰且最新的文档。
  • 在**工作组**中跟踪重要的 React Native 库的迁移状态。
  • 简化开发者的迁移路径

此外,React Native 0.69 将为应用和库开发者提供改进的开发体验 (devX),以促进新架构的采用。你可以在此处找到关于 0.69.0 版本的更多信息。

我们对将与**新架构**共同构建的一切感到兴奋!