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。
协同工作流
- CLI 创建项目并启动开发服务器 → 生成连接 URL 和 QR 码
- Go 扫码连接服务器 → 加载 JavaScript Bundle 并执行
- 代码修改触发热重载 → Go 实时刷新界面
- 开发完成后,CLI 调用 EAS Build 构建生产包 → Go 不参与发布流程
何时从 Go 切换到 Development Build
- 项目需要自定义原生模块或第三方原生 SDK
- 需要推送通知、深度链接等 Go 不支持的能力
- 需要接近生产环境的运行时行为验证
Go 适合原型验证和学习阶段,项目进入正式开发后建议尽早切换到 Development Build。
追问方向
- Expo Go 和 Development Build 的运行时差异是什么?
- EAS Build 的托管构建和本地构建如何选择?
- Expo 的 OTA 更新机制(Updates API)如何工作?