术语表

编辑页面

文档中使用的非显而易见术语列表,涉及 Expo 或更广泛的跨平台开发。


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

Android

由 Google 赞助、供 Android 设备使用的移动操作系统。

App config

位于项目根目录中名为 app.jsonapp.config.jsonapp.config.jsapp.config.ts 的文件。有关更多信息,请参阅 app config 配置

此文件用于以下目的:

  • 配置 Expo CLI 的工作方式。
  • 在 EAS Update 中生成项目的公开 manifest(可把它理解为原生应用里的 index.html)。
  • 列出会影响 npx expo prebuild 如何生成原生代码的 Expo config plugins

app.json

一个 app config 文件。

Apple capabilities

由 Apple 提供的云服务。应用必须在 Apple Developer Portal 中启用这些服务。

Apple Developer Portal

Apple 用于管理应用代码签名的官方网站。EAS Credentials 会自动处理开发者在开发应用时可能需要访问该网站的许多常见原因。

Auto capability signing

EAS Build 的一项功能,可根据项目的 entitlements 文件自动启用或禁用 Apple capabilities了解更多

Autolinking

一种跨平台工具,用于通过原生包管理器自动将原生模块链接到原生应用。

  • 在 Android 上,该工具用于 android/app/build.gradle,并在 Gradle 同步过程中调用。
  • 在 iOS 上,该工具用于 CocoaPodsios/Podfile,并在执行 pod install 时调用。

Autolinking 有两个版本:Expo AutolinkingCommunity Autolinking

默认的 Prebuild template 包含对 Expo AutolinkingCommunity Autolinking 分支的支持。

Babel

用于移除运行时 JavaScript engine 中不可用语言特性的转译器。Metro 内部使用 Babel。

项目可以通过修改项目目录中的 babel.config.js 文件来配置 Babel 的使用方式。在使用 Expo CLI 时,这个文件是可选的。Expo 项目应扩展默认的 Babel 预设 babel-preset-expo

Bare workflow

描述原生项目(位于 androidios 目录中)在 Git 中进行版本管理并由手动维护的方式。这通常适用于现有的“裸” React Native 应用,你需要手动对原生项目进行更改。它具有较高的定制自由度,但也带来了较高的维护成本。

这与使用 app config 和 prebuild 相对,后者中的原生项目不进行版本管理。相反,它们会按需通过 npx expo prebuild 生成,这也是推荐的方式

Bun

一个 JavaScript 运行时,也是 Node.js 的可直接替代方案。Bun 也可用作 JavaScript 的包管理器。有关与 Expo 和 EAS 一起使用的更多信息,请参阅 使用 Bun 指南。

CocoaPods

用于将原生模块链接到原生 iOS 项目的 iOS 包管理器。该包管理器通过 ios/Podfile 文件进行配置,并在用户于 ios 目录中运行 pod install 时更新。

Community Autolinking

这是 React Native 社区对 Expo Autolinkingfork。模块的链接需求与 Expo Autolinking 不同,但实现相同。

Config introspection

一种在内存中评估 npx expo prebuild 结果而不持久化任何代码更改的过程。它用于 Auto Capability Signing,以在不生成任何原生代码的情况下确定 entitlements 文件的外观。该过程也用于 VS Code Expo Tools 扩展中,以调试 Config Mods

Config Mods

附加到 app config 上、供 Prebuild 使用的异步函数。这些函数会接受单个原生文件进行修改,例如 AndroidManifest.xmlInfo.plist。Config mods 会串联起来,并来自 @expo/config-plugins 包。有关更多信息,请参阅 Config plugins

Config Plugin

用于将 config mods 附加到 app Config 上、供 Prebuild 使用的 JavaScript 函数。有关更多信息,请参阅 Config Plugins

Continuous Native Generation (CNG)

描述从一组输入生成原生项目的抽象概念。在 Expo 的语境中,CNG 通过 prebuild 命令实现。更多信息请参阅 Continuous Native Generation

create-expo-app

一个独立的命令行工具(CLI),用于启动已安装 expo 包的新 React Native 应用。更多信息请参阅 create-expo-app 参考

create-react-native-app

一个独立的命令行工具(CLI),用于启动已安装 expo 包并生成原生代码的新 React Native 应用。该 CLI 还支持从 expo/examples 中的示例项目进行启动。

可以通过运行以下任一命令来使用此包:

  • npx create-expo-app
  • yarn create expo-app
  • npm create expo-app

Dangerous mods

prebuild 期间对原生项目应用不稳定更改的 modifiers。使用这些修改器具有不可预测性,并且在 Expo SDK 的主要版本升级之间容易出现破坏性变更。有关更多信息,请参阅 Using a dangerous mod

Development build

开发构建是包含 expo-dev-client 包的应用调试构建。它类似于 Expo Go 的进化版,不受 Expo Go 的限制,并且可以根据应用需求进行定制。

这是使用 Expo 构建生产级应用的推荐方式。有关更多信息,请参阅 Development builds

Dev clients

expo-dev-client 是一个允许你创建开发构建并包含实用开发工具的库。你也可能会遇到“custom dev client”这一说法,它是 Development builds 的同义词。

Development server

开发服务器(或 dev server)是本地启动的服务器,通常通过从 Expo CLI 运行 npx expo start 来启动。

开发服务器通常托管在 http://localhost:8081。它在 / 下提供一个 manifest,客户端通过它来请求 bundler 提供的 JavaScript bundle。

Expo Application Services (EAS)

Expo Application Services (EAS) 是为 Expo 和 React Native 应用深度集成的云服务,例如 EAS BuildEAS SubmitEAS UpdateEAS MetadataEAS InsightsEAS HostingEAS Workflows

EAS Build

EAS BuildEAS 的云服务,用于为 Expo 和 React Native 应用构建 Android 和 iOS 二进制文件。EAS Build 可用于构建 development buildsstandalone apps

EAS CLI

用于与 EAS 协作的命令行工具。有关更多信息,请参阅 EAS CLI 参考。

EAS Config

用于配置 EAS CLIeas.json 文件。有关更多信息,请参阅 使用 eas.json 配置 EAS Build

EAS Hosting

EAS HostingEAS 的云服务,可快速部署使用 Expo RouterReact Native Web 构建的 Web 项目。

EAS Insights

EAS InsightsEAS 的云服务,为 Expo 项目提供使用情况、性能和覆盖范围信息。它使用 expo-insights 库将事件从应用发送到 EAS Insights。

EAS Metadata

一个用于以 JSON 形式上传和下载 Apple App Store 元数据的命令行工具。该工具可在 EAS CLI 包中使用,应当用于改进 iOS 提交流程。有关更多信息,请参阅 EAS Metadata

EAS Update

  1. 来自 EAS 的云托管服务 EAS Update,用于 OTA 更新。
  2. 来自 EAS CLI 的 CLI 命令 eas update,用于将静态文件发布到云托管服务。

EAS Workflows

EAS WorkflowsEAS 的 CI/CD 服务,可让团队自动化重复任务,例如构建 Android 和 iOS 二进制文件、发布空中更新、提交到应用商店、使用 Maestro 运行 E2E 测试,以及将 Web 应用部署到 EAS Hosting。Workflows 通过 .eas/workflows 目录下的 YAML 文件进行配置。

Emulator

Emulator 用于描述计算机上的 Android 设备软件模拟器。通常,iOS 模拟器被称为 Simulator

Entry point

entry point 通常指用于加载应用的初始 JavaScript 文件。在使用 Expo CLI 的应用中,默认入口点是 ./node_modules/expo/AppEntry.js,它会简单地从项目根目录导入 App.js 文件,并将其注册为原生应用中的初始组件。

Experience

应用的同义词,通常暗示其更偏向一次性使用且范围更小,有时带有艺术性和奇趣风格。

Expo Atlas

Expo Atlas 是一个用于可视化 JavaScript bundle 的工具。它可用于检查 bundle 大小,并识别哪些库对生产 bundle 有贡献。

Expo Autolinking

原始的 Autolinking 系统是为使用 expo-modules-core 的项目设计的。该系统根据库根目录中是否存在 expo-module.config.json 来链接模块。

Expo CLI

用于与 Expo 协作的命令行工具。此术语现在指 Local Expo CLI,但历史上指的是 Global Expo CLI。有关更多信息,请参阅 Expo CLI

Expo client

Expo Go 应用的旧名称。

Expo Doctor

Expo Doctor 是一个用于诊断 Expo 项目问题的命令行工具。使用时,请在项目目录中运行 npx expo doctor

Expo export

指来自 Expo CLI 的命令 npx expo export。该命令用于打包应用的 JavaScript 和资源,然后将它们导出到一个静态目录中,静态目录可上传到 EAS Update 等托管服务,并嵌入到 native runtime 中供离线使用。

Expo Fingerprint

@expo/fingerprint 库会对决定项目原生构建的文件和配置进行哈希处理(应用依赖、定制原生代码、原生项目文件和配置)。该哈希代表原生层状态,因此工具可以在不重新构建的情况下判断某个 TypeScript/JavaScript bundle 是否与给定构建兼容。主要用于 EAS Update 的 fingerprint runtime version policy,以及用于 CI/CD 自动化的 EAS Workflows。

Expo Go

Android 和 iOS 应用,用作学习和试验 React Native 的沙盒环境。

由于其限制(例如无法包含自定义原生代码),不建议用于构建和分发生产应用。相反,请使用 development build

Expo install

指来自 Expo CLI 的命令 npx expo install。该命令用于安装包含可与项目当前安装的 expo 版本配合使用的 native modules 的 npm 包。并非所有包都受支持。该命令封装了全局安装的 package managers

Expo MCP server

Expo MCP(Model Context Protocol)服务器 是 Expo 托管的远程服务器,可与 Claude Code、Cursor、VS Code 等 AI 辅助工具集成。它使这些工具能够直接与您的 Expo 项目交互。

Expo Module Config

位于 native module 根目录中的名为 expo-module.config.json 的文件。有关更多信息,请参阅 Module Config

Expo Modules API

Expo Modules API 是一个跨平台 API,用于用 Kotlin 和 Swift 编写原生模块,为你的应用添加新能力。该 API 由库 expo-modules-core 提供,而该库包含在 expo 包中。

Expo Orbit

Expo Orbit 是一款适用于 macOS 和 Windows 的应用,可更快地在设备或模拟器上安装并启动来自 EAS、本地文件或 Snack 项目的构建或更新。

Expo Router

Expo Router 是适用于 React Native 和 Web 应用的基于文件的路由器。它允许你管理应用中各屏幕之间的导航,使用户能够通过在多个平台(Android、iOS 和 Web)上使用相同的组件,无缝地在应用 UI 的不同部分之间移动。

Expo SDK

一组包含 native modulesnpm 包,为相机、推送通知、联系人、文件系统等设备/系统功能提供访问能力。

  • 在可能的情况下,每个包都支持 Android、iOS 和 web。
  • 接口完全使用 TypeScript 编写。
  • Expo SDK 中的所有包彼此兼容,并且可以安全地一起编译。
  • SDK 中的任何包都可以在任何 React Native 应用中使用,只需最少且共享的设置。了解更多
  • 所有包都是开源的,可以自由定制。

Expo start

指来自 Expo CLI 的命令 npx expo start。该命令用于启动本地 development server,由 client 连接以与 Metro bundler 交互。

Fabric

React Native 的渲染系统,用于创建和管理原生视图。有关更多信息,请参阅 Fabric Renderer

FYI

有时也称为 Expo FYI,是位于 expo.fyi 的一系列针对复杂问题的定制解决方案。FYI 链接被广泛用于 Expo 的开发者工具中,以帮助为用户提供更好的开发体验。

Gradle

Gradle 是一种用于多语言软件开发的构建自动化工具。它用于构建 Android 应用。它在编译、打包、测试、部署和发布等任务中控制开发流程。

Hermes engine

Meta 专为 React Native 使用而开发的 JavaScript engine。Hermes 具有提前静态优化和紧凑字节码,以提升面向移动设备的性能,并且是默认的 JS 引擎。

iOS

用于 iPhone、iPad 和 Apple TV 的操作系统。Expo Go 目前运行于 iPhone 和 iPad 的 iOS 上。

JavaScript engine

一种可在设备上执行 JavaScript 的原生包。在 React Native 中,我们主要使用 MetaHermes。其他选项包括 Apple 的 JavaScriptCore 以及 Google 的 V8。

JavaScriptCore engine

由 Apple 开发并内置于 iOSJavaScript engine。React Native for Android 也可以使用一个版本的 JavaScriptCore 以保持一致性。使用 JavaScriptCore 进行调试不如实现了 Chrome DevTools Protocol 的 V8 或 Hermes 那么成熟。

Linking

Linking 可以指 类似于在 Web 上链接到网站那样,深度链接到应用中,也可以指 autolinking

Local Expo CLI

@expo/cli 会随着 expo 包一起安装。这有时被称为“版本化 Expo CLI”,因为它安装在用户的项目中,而不是已弃用的、全局安装的 expo-cli

Manifest

Expo 应用 manifest 类似于 web app manifest。它提供 Expo Go 需要知道如何运行应用的信息以及其他相关数据。

Meta

Meta 曾用名 Facebook,是开发 React NativeMetro BundlerHermes EngineYoga 等项目的公司。Expo 团队与 Meta 合作,以提供尽可能好的开发者体验。

Metro bundler

用于将 JavaScript 文件和资源转换为可在 native runtime 上运行的格式的 bundler。该 bundler 由 Meta 维护,并用于 React Native(包括 web)应用。有关更多信息,请参阅 Metro documentation

Metro config

用于配置 Metro bundlermetro.config.js 文件。在使用 Expo CLI 时,这应扩展包 @expo/metro-config。有关更多信息,请参阅 Customizing Metro

Monorepo

一个包含多个子项目、并通过包管理器相互关联的项目。Monorepo 是维护跨平台应用代码库的绝佳方式。

Native directory

React Native 生态系统有成千上万的库。如果没有专门构建的工具,就很难了解这些库是什么、搜索它们、判断质量、试用它们,以及筛选出不适合你项目的库(有些不适用于 Expo,有些不适用于 Android 或 iOS)。React Native Directory 是一个旨在解决这一问题的网站,我们建议你使用它来寻找项目中要使用的包。

Native module

用原生代码编写的模块,通过 JS 全局对象向 JavaScript 引擎暴露原生平台功能。通常通过 import { NativeModules } from 'react-native'; 访问这些功能。

Native runtime

包含 JavaScript engine 且能够运行 React 应用的原生应用。这包括 Expo Godevelopment buildstandalone apps,甚至像 Chrome 这样的 Web 浏览器。

npm

npmJavaScript 的包管理器 以及存放这些包的注册表。

Package manager

自动化安装、升级、配置和移除项目中库(也称为依赖项)的过程。参见 BunnpmpnpmYarn

Package manager workspaces

Expo 用户推荐的 monorepo 方案。有关如何为受支持的包管理器配置 workspaces 的更多信息,请参阅 使用 Monorepo 指南。

Platform extensions

Platform extensions 是 Metro bundler 的一项功能,它允许用户根据特定文件名按平台替换文件。例如,如果一个项目有 .index.js 文件和 .index.ios.js 文件,那么在为 iOS 打包时会使用 index.ios.js,而在为所有其他平台打包时会使用 index.js 文件。

默认情况下,platform extensions 会在 @expo/metro-config 中按照以下公式解析:

  • Android: *.android.js, *.native.js, *.js
  • iOS: *.ios.js, *.native.js, *.js
  • Web: *.web.js, *.js

pnpm

pnpm 是一个 JavaScript 的包管理器,专注于提高磁盘空间效率。

Prebuild

根据 应用配置 为 React Native 项目生成临时的本地 androidios 目录的过程。该过程通过在项目目录中从 Expo CLI 运行命令 npx expo prebuild 来执行。

有关更多信息,请参见 Prebuild 模板自动链接

Prebuild 模板

React Native 项目模板作为 Prebuild 的第一步使用。该模板会随 Expo SDK 进行版本控制,并且模板会根据项目中安装的 expo 版本来选择。模板克隆完成后,npx expo prebuild 会评估 应用配置 并运行会修改模板中各种文件的 配置修改

虽然可以使用 npx expo prebuild --template /path/to/template 标志来更改模板,但默认的 prebuild 模板包含 npx expo prebuild 命令所依赖的重要初始默认值。

默认模板目前位于 expo-template-bare-minimum

发布

我们将“publish”作为“deploy”的同义词使用。当你发布一个应用时,它会通过 Expo Go 变为可通过一个持久 URL 访问;或者在 独立应用 的情况下,它会更新该应用。

React Native

React Native 让你只用 JavaScript 就能构建移动应用。它使用与 React 相同的设计,使你能够通过声明式组件组合出丰富的移动 UI。

React Native Web

建立在 react-dom 之上的高性能抽象层,使 React Native 的核心原语能够在浏览器中运行。面向 Web 的 React Native(RNW)由 X 开发,目前用于他们的 主站Expo SDKExpo CLI 对 RNW 提供一等支持。

React Navigation

React Native 应用首选的导航库,由 Expo 团队开发并赞助。

远程调试

远程调试是 React Native 应用的一种已弃用的调试方式。如今更好的替代方案是使用 Hermes,因为你可以将 React Native DevTools 连接到它。

它也被称为 Async Chrome 调试,是一种用于调试 React Native 应用的实验性系统。该系统通过在 Chrome 标签页的 web worker 中执行应用的 JavaScript,然后通过 websocket 将原生命令发送到原生设备来工作。

模拟器

iOS 设备模拟器,可在 macOS 上运行(或在 Snack 中运行),让你在没有实体设备的情况下开发应用。

Slug

应用配置 中的 slug 是项目的一个便于 URL 使用的名称。它在你的 Expo 账户中是唯一的。

Snack

Snack 是一个基于浏览器的开发环境,你可以在其中构建 Expo 体验,而无需在手机或电脑上安装任何工具。

Software Mansion

位于波兰克拉科夫的一家开发机构。react-native-gesture-handlerreact-native-screensreact-native-reanimated 的维护者。Expo 的平台团队由来自 Software Mansion 的多名外包人员组成。Software Mansion 的所有核心 React Native 库都在 Expo Go 中受支持。

独立应用

“生产构建”的同义词。可提交到 Google Play 商店或 Apple App Store 的应用二进制文件。更多信息请参见 为应用商店构建项目在本地或自有基础设施上运行构建

商店配置

用于配置 EAS Metadatastore.config.json 文件。该文件可以通过现有的 App Store 条目使用 eas metadata:pull 生成。

Sweet API

用于编写 React Native 模块的 Swift 和 Kotlin API。此 API 由库 expo-modules-core 提供,而该库随 expo 包一同发布。更多信息请参见 模块 API

TypeScript

TypeScript 是一种强类型编程语言,建立在 JavaScript 之上,可为任何规模的项目提供更好的工具支持。Expo SDK 使用 TypeScript 编写,我们强烈推荐使用它。更多信息请参见我们的 TypeScript 指南

更新

传统上,Android 和 iOS 应用的更新方式是向 App Store 和 Play 商店提交一个更新后的二进制文件。Updates 允许你向应用推送更新,而无需承担向商店提交新版本的开销。更多信息请参见 发布 文档。

VS Code Expo Tools

用于改善开发者在处理应用配置文件时体验的 VS Code 扩展。此扩展为 应用配置商店配置Expo 模块配置EAS 配置 提供自动补全和智能提示。更多信息请参见 VS Code Expo Tools 扩展

Watchman

Metro 用于在开发期间执行热重载的文件监视器。Watchman 包含原生代码,若全局安装可能会导致问题。Watchman 由 Meta 维护。

webpack

Expo CLI 用于开发 react-native-web 应用的已弃用打包器。

Yarn

Yarn 是一个由 Meta 创建的 JavaScript 的包管理器。它有两个主线版本:Yarn v1(Classic)Yarn Berry

Yoga

React Native 内部使用的原生跨平台库,用于向原生视图提供 CSS FlexBox 支持。React Native 的样式会传递给 Yoga,以对屏幕上的元素进行布局和样式设置。更多信息请参见 Yoga 文档。