--- author: Peanut created_at: 2026-04-07 purpose: 定义小程序开发工作流程,解决每次修改代码后需要重新登录的问题 --- # 小程序开发工作流程设计 ## 问题背景 使用 VS Code + 微信开发者工具开发 uni-app 小程序时,每次修改代码后: 1. uni-app 自动重新编译到 `unpackage/dist/dev/mp-weixin` 2. 微信开发者工具检测到文件变化后自动重新加载 3. 小程序重启导致登录态丢失 4. 需要重新登录,严重影响开发效率 ## 设计方案 采用 **H5 开发模式为主 + 微信开发者工具验证为辅** 的双轨工作流。 ### 架构概览 ``` ┌─────────────────────────────────────────────────────────────┐ │ 开发工作流程 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ 代码修改 ┌─────────────────────┐ │ │ │ VS Code │ ────────────> │ 微信开发者工具 │ │ │ │ (编辑代码) │ │ (预览/调试小程序) │ │ │ └─────────────┘ └─────────────────────┘ │ │ │ ▲ │ │ │ npm run dev:h5 │ │ │ ▼ │ │ │ ┌─────────────┐ │ │ │ │ 浏览器 │ <────────────────────┘ │ │ │ (H5 开发模式) │ 大部分功能在此验证 │ │ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 方案详情 #### 1. H5 开发模式(承担 90% 开发工作) **启动命令**: ```bash cd mini-program npm run dev:h5 ``` **访问地址**:`http://localhost:5173`(Vite 自动分配,如有占用自动递增) **技术原理**: - uni-app 的 H5 平台与小程序平台共享大部分代码 - 平台差异通过条件编译处理(`#ifdef H5` / `#ifdef MP-WEIXIN`) - 登录态存储于浏览器 localStorage,页面刷新后保留 **适用场景**: - UI/样式开发 - 业务逻辑开发 - 组件功能调试 - API 接口联调 **不适用场景**: - 微信小程序特有 API(微信登录、分享、支付等) - 小程序原生组件测试 - 真机兼容性验证 #### 2. 微信开发者工具配置优化 **配置步骤**: 1. 打开微信开发者工具 2. 菜单栏:**设置** → **通用设置** 3. 找到 **编译设置** 区域 4. **取消勾选** "文件修改后自动编译" 或 "保存后自动编译" **效果**: - VS Code 修改代码后,微信开发者工具不会自动重新编译 - 需要手动点击"编译"按钮(或 Ctrl+B)才会重新加载 - 减少不必要的重启,保持登录态 **替代方案**(如果上述选项不存在): - 在微信开发者工具中,勾选 "关闭真机调试自动刷新" - 或使用 "预览" 模式而非 "编辑模式" #### 3. 推荐工作流 | 开发阶段 | 使用环境 | 操作说明 | |----------|----------|----------| | UI/样式开发 | H5 | 快速迭代,即时预览 | | 业务逻辑开发 | H5 | 大部分逻辑通用,使用浏览器 DevTools 调试 | | 小程序 API 测试 | 小程序 | 如微信登录、分享等特有功能 | | 最终验证 | 小程序 | 发布前在真机环境测试 | **日常开发流程**: ```bash # 1. 启动 H5 开发服务器(终端 1) cd mini-program npm run dev:h5 # 2. 打开浏览器访问 http://localhost:5173 # 3. 登录一次后,后续刷新页面登录态保留 # 4. 需要测试小程序特性时: # - 在另一个终端启动小程序模式 npm run dev:mp-weixin # - 在微信开发者工具中打开 unpackage/dist/dev/mp-weixin # - 手动触发编译(避免自动刷新) ``` ## 技术细节 ### uni-app 平台差异处理 **条件编译语法**: ```javascript // #ifdef H5 // H5 平台特有代码 // #endif // #ifdef MP-WEIXIN // 微信小程序平台特有代码 // #endif // #ifdef H5 || MP-WEIXIN // 多平台通用代码 // #endif ``` **CSS 条件编译**: ```css /* #ifdef H5 */ .h5-only-style { /* H5 特有样式 */ } /* #endif */ ``` ### 登录态持久化 当前项目已正确实现登录态存储: ```javascript // 存储 token uni.setStorageSync('access_token', token) // 读取 token const token = uni.getStorageSync('access_token') // 删除 token(登出) uni.removeStorageSync('access_token') ``` **注意**:uni-app 的 storage API 在不同平台使用不同的底层存储: - H5:localStorage - 微信小程序:wx.setStorageSync - 其他小程序:对应平台的 storage API ### 端口管理 H5 开发服务器默认端口为 5173,如被占用会自动递增(5174、5175...)。 **检查端口占用**: ```bash netstat -ano | findstr "5173" ``` **终止占用进程**: ```bash taskkill /F /PID <进程 ID> ``` ## 注意事项 ### 1. H5 与小程序的差异 | 特性 | H5 | 小程序 | |------|-----|--------| | 路由 | vue-router | 小程序页面栈 | | 存储 | localStorage | wx.storage | | 网络 | XMLHttpRequest | wx.request | | 登录 | 自定义登录 | 微信登录 | | 分享 | 浏览器分享 | 微信分享 API | ### 2. 需要小程序环境验证的功能 - 微信小程序登录 - 微信分享 - 微信支付 - 小程序码生成 - 微信开放标签 - 真机兼容性 ### 3. 开发效率优化建议 1. **使用浏览器 DevTools**: - Chrome DevTools 的 Elements 面板检查样式 - Network 面板查看 API 请求 - Console 面板调试 JavaScript - Application 面板查看 localStorage 2. **H5 热更新**: - 修改样式后自动刷新 - 修改逻辑后热替换(保持应用状态) 3. **小程序模式仅用于验证**: - 不要在小菜模式中进行日常开发 - 只在需要测试小程序特有功能时切换 ## 验收标准 采用此工作流程后应达到: - [x] 日常开发无需频繁重新登录 - [x] H5 模式下可完成 90% 的开发工作 - [x] 小程序模式仅用于最终验证 - [x] 开发效率显著提升 ## 参考文档 - [uni-app 条件编译](https://uniapp.dcloud.net.cn/tutorial/platform.html) - [uni-app H5 开发模式](https://uniapp.dcloud.net.cn/quickstart-h5.html) - [微信开发者工具设置](https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html)