Expo Modules API:入门

编辑页面

了解如何开始使用 Expo Modules API。


For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

**使用 Expo Modules API 开始有两种方式:**你可以从零初始化一个新模块,或者将 Expo Modules API 添加到现有模块中。本指南将带你从零创建一个新模块,而 在现有库中集成 则介绍后者。

使用 Expo Modules API 创建新模块的两种推荐流程:

这两种流程都将在后续章节中介绍。

向现有应用添加一个新模块

1

创建本地 Expo 模块

进入你的项目目录(包含 package.json 文件的目录),然后运行以下命令。这是创建本地 Expo 模块的推荐方式。

Terminal
npx create-expo-module@latest --local

你可以在 CLI 提示中提供一个有意义的模块名称。对于其余提示,也可以直接接受默认建议。

运行命令后,你会在项目中看到一个名为 modules 的新目录被创建。目录结构应如下所示:

modules
my-module
  android
  ios
  src
  expo-module.config.json
  index.ts

然后,如果你的项目还没有生成原生项目(androidios 目录),请运行以下命令;否则跳过此命令:

Terminal
npx expo prebuild --clean

Note: 如果你的项目根目录中已经存在一个通过 npx expo prebuild 创建的 ios 目录,你必须重新安装 pods:


Terminal
npx pod-install

2

使用本地模块

在你的应用中导入本地模块,例如在 App.jsApp.tsxsrc/app/index.tsx 中:

src/app/index.tsx
%%placeholder-start%%...%%placeholder-end%% import MyModule from '@/modules/my-module'; export default function HomeScreen() { return ( <View style={styles.container}> <Text>{MyModule.hello()}</Text> </View> ); }

在终端中启动开发服务器,这样当你在下一步编辑原生模块并构建应用时,改动就会反映到应用中:

Terminal
npx expo start

恭喜!你已经创建了一个本地 Expo 模块。现在可以开始开发它了。

Tip: 你也可以通过应用这些配置更改来使用绝对导入路径。

3

编辑模块

为了在本地开发和测试你的模块,我们将使用 Android Studio 和 Xcode 分别处理 Android 和 iOS。

Android

  1. 在 Android Studio 中打开项目里的 android 目录(这是在第 1 步中由 npx expo prebuild 生成的)。Gradle 完成原生目录项目同步可能需要一段时间。
  2. 项目同步完成后,打开 modules/my-module/android/src/main/java/expo/modules/mymodule/MyModule.kt 文件。
  3. hello 函数修改为返回不同的字符串,例如 "Hello world! 🌎🤖",并保存文件。
  4. 通过点击顶部菜单栏中的 Run 'app' 按钮来构建应用,你会在屏幕上看到这些更改。

每当你对原生代码做出更改时,都需要重复构建步骤以使更改生效。

iOS

  1. 在终端中运行 xed ios 命令,从 Xcode 打开项目中的 ios 目录(这是在第 1 步中由 npx expo prebuild 生成的)。
  2. Pods > Development Pods > MyModule 下,打开 MyModule.swift 文件。
  3. hello 函数修改为返回不同的字符串,例如 "Hello world! 🌎🍎",并保存文件。
  4. 通过点击顶部菜单栏中的 Run 按钮,或按 ⌘ Cmd + R 来构建应用,你会在屏幕上看到这些更改。

每当你对原生代码做出更改时,都需要重复构建步骤以使更改生效。

Tip: 如果你向模块中添加了新的原生文件,或者修改了 expo-module.config.json,请使用 npx pod-install 重新安装 pods。

Note: 还有其他方式可以让 Expo 模块与你的应用并行开发。例如,你可以使用 monorepo 或发布到 npm,具体请参阅 如何在项目中使用独立的 Expo 模块 指南。

使用示例项目创建一个新模块

1

创建 Expo 模块

要从零创建一个新的 Expo 模块,请按如下所示运行 create-expo-module 脚本。 该脚本会向你提出几个问题,然后生成原生 Expo 模块,以及适用于 Android 和 iOS、并使用你新模块的示例应用。

Terminal
npx create-expo-module@latest my-module

2

打开模块并启动开发服务器

进入模块目录,然后通过运行以下命令打开 Android 和/或 iOS 示例项目:

Terminal
cd my-module
npm run open:android
npm run open:ios

进入 example 目录并在终端中启动开发服务器,这样当你在下一步编辑原生模块并构建应用时,改动就会反映到应用中:

Terminal
cd example
npx expo start

Note: 如果你使用的是 Windows,你可以通过在 Android Studio 中打开 android 目录来打开示例项目,但无法打开 iOS 项目文件。

3

编辑模块

Android

  1. 打开 my-module/android/src/main/java/expo/modules/mymodule/MyModule.kt 文件。
  2. hello 函数修改为返回不同的字符串,例如 "Hello world! 🌎🤖",并保存文件。
  3. 通过点击顶部菜单栏中的 Run 'app' 按钮来构建应用,你会在屏幕上看到这些更改。

每当你对原生代码做出更改时,都需要重复构建步骤以使更改生效。

iOS

  1. Pods > Development Pods > MyModule 下,打开 MyModule.swift 文件。
  2. hello 函数修改为返回不同的字符串,例如 "Hello world! 🌎🍎",并保存文件。
  3. 通过点击顶部菜单栏中的 Run 按钮,或按 ⌘ Cmd + R 来构建应用,你会在屏幕上看到这些更改。

每当你对原生代码做出更改时,都需要重复构建步骤以使更改生效。

Tip: 如果你向模块中添加了新的原生文件,或者修改了 expo-module.config.json,请使用 npx pod-install 重新安装 pods。

下一步

现在你已经学会了如何初始化模块并对其进行简单修改,可以继续学习教程,或者直接深入查看 API 参考。

教程:创建原生模块

关于使用 Expo Modules API 创建一个可持久化设置的原生模块的教程。

Expo Modules API 参考

使用 Swift 和 Kotlin 创建原生模块的参考文档。