5月27日 20:12

Expo CLI和Expo Go有什么区别?它们如何协同工作?

直接回答

Expo CLI 是命令行开发工具,负责创建项目、启动服务器、构建发布;Expo Go 是手机上的沙箱应用,负责扫码连接开发服务器并实时预览。两者不是替代关系,而是前后端协作:CLI 生成二维码和开发服务,Go 扫码加载并运行代码。

Expo CLI 核心职责

CLI 是整个开发流程的控制中心:

  • 项目初始化npx create-expo-app 一键创建项目,支持 TypeScript 模板
  • 开发服务器npx expo start 启动本地服务,提供热重载和 QR 码
  • 构建发布:通过 EAS Build 生成 APK、IPA 或 OTA 更新包
  • 依赖管理:自动安装与当前 SDK 版本兼容的 Expo 包

CLI 本身不运行代码,它搭建环境、编译资源、推送更新到客户端。

Expo Go 核心职责

Go 是预装了完整 Expo SDK 的沙箱 App:

  • 实时预览:扫描 QR 码即可在真机上看到代码效果
  • 零构建开发:开发阶段无需编译原生代码,修改即生效
  • 跨设备测试:多台手机同时连接同一开发服务器

关键限制:Go 只包含 SDK 预装模块,无法运行自定义原生代码。需要蓝牙、后台任务、自定义原生模块时,必须改用 Development Build。

协同工作流

  1. CLI 创建项目并启动开发服务器 → 生成连接 URL 和 QR 码
  2. Go 扫码连接服务器 → 加载 JavaScript Bundle 并执行
  3. 代码修改触发热重载 → Go 实时刷新界面
  4. 开发完成后,CLI 调用 EAS Build 构建生产包 → Go 不参与发布流程

何时从 Go 切换到 Development Build

  • 项目需要自定义原生模块或第三方原生 SDK
  • 需要推送通知、深度链接等 Go 不支持的能力
  • 需要接近生产环境的运行时行为验证

Go 适合原型验证和学习阶段,项目进入正式开发后建议尽早切换到 Development Build。

追问方向

  • Expo Go 和 Development Build 的运行时差异是什么?
  • EAS Build 的托管构建和本地构建如何选择?
  • Expo 的 OTA 更新机制(Updates API)如何工作?
标签:Expo