使用 Expo 与现有 React Native 应用的概览
编辑页面
了解如何在现有 React Native 应用中使用 Expo 工具和服务。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
如果你有一个不使用任何 Expo 工具的 React Native 应用,你可能会想知道 Expo 能为你提供什么、为什么你可能想使用 Expo 工具和服务,以及如何开始。
Expo 提供的所有工具和服务在任何 React Native 应用中都能很好地工作。
你可以使用 EAS 快速搭建一个专业的 CI/CD 工作流,用于构建、审查、部署和更新你的应用。Expo CLI 为使用 React Native 提供了最佳的命令行体验。Expo SDK 是 React Native 的扩展标准库。它为开发者提供高质量、维护良好的原生库,并使用一致的 API 约定,使其更易于学习和使用。
如果你曾经为 React Native 编写过原生模块,你一定会惊讶于使用 Expo Modules API 提供的惯用 Swift 和 Kotlin DSL 来构建和维护模块有多么容易。
还有很多内容值得探索,下面的链接将帮助你了解可用的选项。
渐进式采用步骤
下面是四个建议的渐进式采用阶段。这些阶段通常从快速改进开发者体验开始,逐步过渡到更显著的工作流和代码库优化。
只有第一阶段——先决条件——是其他阶段所必需的。按照其说明完成后,你可以直接跳到最符合你采用 Expo 目标的工具和服务。
先决条件
以下这些初始步骤是后续采用 Expo 工具和服务所必需的:
要解锁 Expo 功能,你需要在现有的 React Native 项目中安装 expo 包。此指南同时提供自动和手动安装步骤。
迁移到 Expo CLI 可以直接替换 @react-native-community/cli。它与所有 Expo 工具和服务完全兼容。此指南解释了其优势,并提供了在安装 expo 包后启动开发服务器的编译命令。
快速见效
以下内容有助于改善开发体验,并且需要进行配置:
使用 Expo SDK 提供的众多库之一。Expo SDK 是一套广泛的库,提供对原生 API 的访问。
expo-dev-client 为你的调试版应用提供类似 Expo Go 的应用启动器界面。了解如何在你现有的 React Native 项目中安装和配置它。
使用 Expo Modules API 通过 Swift 和 Kotlin 编写原生模块。
按文件查看你需要对原生项目进行的所有更改的差异,以便将它们升级到下一个 Expo SDK 和 React Native 版本。
新工作流
一旦你的应用安装了 expo 包,你就可以通过单个命令将应用提交到应用商店,或者配置 expo-updates 库来管理应用代码的远程更新:
通过一个命令构建并将你的应用提交到应用商店。
了解如何安装和配置 expo-updates 来管理远程更新并启用 PR 预览。
新思维方式
以下内容有助于提升项目的长期可维护性、原生代码维护以及更轻松的升级:
了解如何通过根据配置按需生成原生项目,来简化它们的维护。
Expo Router 是一个基于文件的路由库,提供诸如有组织的导航层级、自动深度链接支持等优势。
常见问题
在我现有的 React Native 项目中采用 Expo 需要多长时间?
采用 Expo 不必一步完成。你可以从_快速见效_开始,然后再转向更复杂的部分。你也可以根据项目最需要的内容,选择性地采用你想要的功能。
在我的 React Native 应用中使用 Expo 我能获得什么?
在你现有的 React Native 应用中采用 Expo 工具,可以帮助你使用 Expo SDK 更快开发,通过 CNG 简化原生代码维护和升级,通过 EAS Update 更快部署,以及更多功能。
谁在使用 Expo?
Expo 被全球顶级公司使用,这些公司服务于数百万最终用户。更多信息请参阅我们的 Expo 案例展示。
采用 Expo 会对我应用的体积产生什么影响?
expo 包体积很小,因为它只包含每个应用都需要的最小模块集,以及自动链接基础设施和其他内置的 Expo SDK 库。有关如何确定应用实际大小的更多信息,请参阅了解应用大小。
为什么 React Native 推荐使用 Expo?
大多数 React Native 开发者在构建应用时都会解决常见问题,例如实现导航、访问原生 API、升级到新版本等。这需要使用一组特定的工具和库来构建和维护你的应用——这意味着你正在创建自己的框架。
Expo 通过提供一组基础构件并帮助你(开发者)专注于构建应用来解决这些问题。它还提供了更快迭代开发的工具。更多信息请参阅为什么 React Native 推荐使用框架。
我是否必须移除原生项目才能使用 Expo?
默认情况下,使用 create-expo-app 创建的 Expo 项目会使用持续原生生成(CNG),并且不包含 android 和 ios 原生目录。如果你在现有的 React Native 应用中逐步采用 Expo,就不需要移除这些目录。你可以使用 npx expo run:[android|ios] 作为 @react-native-community/cli 提供的命令的替代方案,在本地编译你的应用,并保留原生项目的配置。
我在使用 CodePush。还能继续和 Expo 一起使用吗?
CodePush 将于 2025 年 3 月退役,并且与 React Native 的新架构不兼容,因此从长远来看,我们建议切换到 EAS Update 来管理应用代码的远程更新。不过,你今天就可以在启用了 CodePush 的应用中开始使用 Expo 工具,包括 Expo SDK、Expo CLI、EAS Build 等。
我必须使用 EAS 来构建吗?
Expo Application Services (EAS) 是深度集成的云服务,适用于 Expo 和 React Native 应用,提供构建、测试和部署应用的工具。
虽然我们建议使用 EAS 以便与你的团队成员顺畅协作并快速分发,但你也可以在本地、CI 上,或者你喜欢的任何其他方式编译应用。