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 创建新模块的两种推荐流程:
-
向现有 Expo 应用添加一个新模块,并使用它来测试和开发你的模块。
-
使用生成的示例项目独立创建一个新模块,如果你想在多个项目中复用它或将其发布到 npm。
这两种流程都将在后续章节中介绍。
向现有应用添加一个新模块
1
创建本地 Expo 模块
进入你的项目目录(包含 package.json 文件的目录),然后运行以下命令。这是创建本地 Expo 模块的推荐方式。
- npx create-expo-module@latest --local你可以在 CLI 提示中提供一个有意义的模块名称。对于其余提示,也可以直接接受默认建议。
运行命令后,你会在项目中看到一个名为 modules 的新目录被创建。目录结构应如下所示:
modulesmy-moduleandroidiossrcexpo-module.config.jsonindex.ts然后,如果你的项目还没有生成原生项目(android 和 ios 目录),请运行以下命令;否则跳过此命令:
- npx expo prebuild --cleanNote: 如果你的项目根目录中已经存在一个通过
npx expo prebuild创建的 ios 目录,你必须重新安装 pods:
Terminal-npx pod-install
2
使用本地模块
在你的应用中导入本地模块,例如在 App.js、App.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> ); }
在终端中启动开发服务器,这样当你在下一步编辑原生模块并构建应用时,改动就会反映到应用中:
- npx expo start恭喜!你已经创建了一个本地 Expo 模块。现在可以开始开发它了。
Tip: 你也可以通过应用这些配置更改来使用绝对导入路径。
3
编辑模块
为了在本地开发和测试你的模块,我们将使用 Android Studio 和 Xcode 分别处理 Android 和 iOS。
Android
- 在 Android Studio 中打开项目里的 android 目录(这是在第 1 步中由
npx expo prebuild生成的)。Gradle 完成原生目录项目同步可能需要一段时间。 - 项目同步完成后,打开 modules/my-module/android/src/main/java/expo/modules/mymodule/MyModule.kt 文件。
- 将
hello函数修改为返回不同的字符串,例如 "Hello world! 🌎🤖",并保存文件。 - 通过点击顶部菜单栏中的 Run 'app' 按钮来构建应用,你会在屏幕上看到这些更改。
每当你对原生代码做出更改时,都需要重复构建步骤以使更改生效。
iOS
- 在终端中运行
xed ios命令,从 Xcode 打开项目中的 ios 目录(这是在第 1 步中由npx expo prebuild生成的)。 - 在 Pods > Development Pods > MyModule 下,打开 MyModule.swift 文件。
- 将
hello函数修改为返回不同的字符串,例如 "Hello world! 🌎🍎",并保存文件。 - 通过点击顶部菜单栏中的 Run 按钮,或按 ⌘ Cmd + R 来构建应用,你会在屏幕上看到这些更改。
每当你对原生代码做出更改时,都需要重复构建步骤以使更改生效。
Tip: 如果你向模块中添加了新的原生文件,或者修改了 expo-module.config.json,请使用npx pod-install重新安装 pods。
Note: 还有其他方式可以让 Expo 模块与你的应用并行开发。例如,你可以使用 monorepo 或发布到 npm,具体请参阅 如何在项目中使用独立的 Expo 模块 指南。
使用示例项目创建一个新模块
1
2
3
编辑模块
Android
- 打开 my-module/android/src/main/java/expo/modules/mymodule/MyModule.kt 文件。
- 将
hello函数修改为返回不同的字符串,例如 "Hello world! 🌎🤖",并保存文件。 - 通过点击顶部菜单栏中的 Run 'app' 按钮来构建应用,你会在屏幕上看到这些更改。
每当你对原生代码做出更改时,都需要重复构建步骤以使更改生效。
iOS
- 在 Pods > Development Pods > MyModule 下,打开 MyModule.swift 文件。
- 将
hello函数修改为返回不同的字符串,例如 "Hello world! 🌎🍎",并保存文件。 - 通过点击顶部菜单栏中的 Run 按钮,或按 ⌘ Cmd + R 来构建应用,你会在屏幕上看到这些更改。
每当你对原生代码做出更改时,都需要重复构建步骤以使更改生效。
Tip: 如果你向模块中添加了新的原生文件,或者修改了 expo-module.config.json,请使用npx pod-install重新安装 pods。
下一步
现在你已经学会了如何初始化模块并对其进行简单修改,可以继续学习教程,或者直接深入查看 API 参考。
关于使用 Expo Modules API 创建一个可持久化设置的原生模块的教程。
使用 Swift 和 Kotlin 创建原生模块的参考文档。