想用一套代码同时上 Android、iOS 和 Web,过去意味着在原生、React Native、前端三套技术栈之间反复横跳。Expo 把这条路线拉直了:它是一套开源框架,让你用 React 和 JavaScript 写一次,就能跑到三大平台。它还配套了 EAS(Expo Application Services)做构建、发布与迭代,把原生开发的琐碎流程也承包了。

项目基本信息

信息项详情
项目名称expo
GitHub地址https://github.com/expo/expo
项目描述An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web.
作者expo
开源协议MIT License
开源状态公开
LanguagesTypeScript
Stars53,104
Forks14,792
支持平台Windows / macOS / Linux
最后更新2026-10-27

一、项目介绍

Expo 是构建「通用原生应用」的开源平台,运行在 Android、iOS 与 Web 上。它包含 Expo SDK、Modules API、Go App、CLI、Router 与文档等一整套工具。你用 React 写 UI 与逻辑,Expo 的通用运行时负责把能力映射到各平台原生接口。配合托管的 EAS,个人或小团队也能像大厂一样持续构建与发布。

二、核心优势

  • 跨三端:一套 React 代码覆盖 Android / iOS / Web。
  • 生态完整:SDK、路由、CLI、模块 API 一体。
  • 云端加持:EAS 负责构建、提交与 OTA 更新。
  • 上手低:Web 开发者能平滑切入原生。

三、适用场景

  • 创业项目快速验证多端产品。
  • 需要同时覆盖移动与 Web 的应用。
  • 个人开发者独立上线 App。
  • 已有 Web 团队想拓展移动端。

四、安装教程

需 Node.js,用官方脚手架建项目:

npx create-expo-app@latest my-app
cd my-app
npm start

用 Expo Go 扫码即可在手机预览;Web 端访问终端给出的 localhost 地址。常见报错:Node 版本不符——用 18+ LTS;metro 端口占用——退出占用进程或换端口。

五、使用示例

新建页面并用 Expo Router 组织路由:

import { View, Text } from "react-native"
export default function Home() {
  return <View><Text>你好,Expo</Text></View>
}

改完保存即热更新,移动端与 Web 同步预览。

六、常见问题

  • 必须上 EAS 吗?本地也能构建,EAS 是可选增强。
  • 能接原生模块吗?可以,支持自定义原生模块。
  • Web 支持完整吗?多数能力可用,个别原生 API 有差异。
  • 适合大型 App 吗?大量生产 App 在用。

七、总结

Expo 把「一次编写、三端运行」落到了可工程化的程度。它降低了原生应用的门槛,又保留了扩展原生能力的可能,是 React 技术栈做移动与跨端最成熟的框架之一。