uni-app 部署发布策略,开发是一套代码,发布不是一条路
uni-app 最吸引人的地方是一套代码可以发布到多个平台。这句话没错。但很多新手会误会成发布也只需要点一个按钮。真不是。H5、小程序、App 的上线方式、审核规则、缓存策略、回滚方式、版本管理都不一样。你在开发阶段享受“统一”在发布阶段必须尊重“差异”。这一篇不追求讲完所有平台规则。我们只把一个商品应用从开发到上线最容易踩的发布问题讲清楚。太长不看版发布前先问四个问题。我要发到哪个平台H5、微信小程序、App还是多个一起发当前构建连接的是开发接口、测试接口还是生产接口平台需要的域名、权限、隐私协议、版本号、证书都配好了吗发出去之后发现问题怎么观察、怎么降级、怎么回滚开发时你可以想“一套代码”。发布时一定要按平台拆开想。这一篇放在系列里的位置如果你还没做上线前检查先看 10-上线前检查清单.md。如果你担心权限和隐私回看 14-安全防护与数据保护.md。如果你还没做真机和异常测试先看 15-测试调试与质量保证.md。这一篇解决的是代码写完以后怎么发出去怎么别把开发环境、错误配置和不可回滚风险一起发出去。先看三条发布路径同一份 uni-app 源码最后会走到不同平台。H5微信小程序Appuni-app 源码构建发布目标生成 Web 静态资源生成小程序项目生成 Android/iOS 安装包服务器或 CDN微信开发者工具上传审核应用市场或企业分发看起来都是“发行”。但每条路要检查的东西不同。发布前先做环境隔离上线事故里有一种特别低级但特别常见。生产包连到了测试接口。或者测试包连到了生产支付。这种问题不靠“我记得改了”来解决。要靠环境配置集中管理。// 文件位置config/env.jsconstconfigs{development:{baseURL:https://dev-api.example.com,enableDebug:true},test:{baseURL:https://test-api.example.com,enableDebug:true},production:{baseURL:https://api.example.com,enableDebug:false}}exportconstappConfigconfigs[process.env.NODE_ENV]||configs.development请求封装里只读配置。// 文件位置utils/request.jsimport{appConfig}from/config/envexportconstrequest(options){returnnewPromise((resolve,reject){uni.request({url:${appConfig.baseURL}${options.url},method:options.method||GET,data:options.data||{},success:resolve,fail:reject})})}关键点是页面不要到处写死接口域名。域名散落在页面里最后一定会有人漏改。H5 发布看资源路径、路由刷新和缓存H5 发布最像普通前端项目。你构建出一批静态文件然后放到服务器、对象存储或 CDN 上。H5 最常见的问题有三个。资源路径错了商品图片、JS、CSS 加载 404页面白屏或样式丢失。如果你的站点部署在子路径比如https://example.com/goods-app/就要确认构建配置里的基础路径是否匹配。发布后打开浏览器 DevTools先看 Network 有没有红色 404。刷新深层页面 404用户直接打开商品详情页或者在详情页刷新。如果服务端没有做好回退配置可能直接 404。能不能用户访问 /goods/detail?id1Web 服务器服务器是否能识别前端路由返回 index.html404如果你用的是前端路由模式要让服务器把未知前端路径回退到index.html。不同服务器配置方式不同但思路一样。CDN 缓存导致旧代码还在你发了新版本但用户看到的还是旧页面。这通常是缓存问题。发布 H5 时建议静态资源文件带 hashHTML 不要缓存太久。这样 JS/CSS 可以长缓存入口 HTML 可以尽快拿到新版本。微信小程序发布看 appid、合法域名、包体积和审核小程序不是把 H5 丢上服务器。它有平台规则。商品应用上线微信小程序前至少检查这些。检查项为什么重要appid错 appid 会发到错误小程序请求合法域名未配置域名时真机请求会失败上传文件域名图片上传也要配置对应域名隐私协议涉及用户信息、相册、位置等能力时必须说明权限用途相机、定位、相册要和功能匹配包体积超限会影响上传或启动体验页面路径分享、跳转、扫码入口要能打开小程序发布一般会经历这样的流程。本地开发微信开发者工具预览真机测试上传体验版提交审核发布线上版本有一点要特别注意。小程序审核是需要时间的。所以如果你上线后才发现重大问题修复节奏不会像 H5 那么自由。上线前的测试和灰度体验就更重要。App 发布看证书、版本号、权限和应用市场规则App 发布比 H5 和小程序更重。你要考虑 Android 和 iOS 的包名、证书、版本号、权限、隐私政策、应用市场审核。最容易被忽略的是版本号。一般会有两个概念。概念用途versionName给用户看的版本比如1.2.0versionCode给系统判断升级顺序的数字比如10200不要只改展示版本不改构建版本。否则应用市场或系统可能判断不出这是一个新包。权限也要克制。如果商品应用只做浏览和发布可能需要相册、相机、网络。除非你真的做“附近商品”否则不要随便申请定位。权限越多审核风险越高用户也越不信任。分包和预加载不是上线前才想起来前面 13-性能优化入门.md 讲过分包和预加载。发布阶段要再核一次。pages.json里可以配置页面、tabBar、subPackages、preloadRule 等。官方文档里也明确preloadRule可以在进入小程序某个页面时预下载可能需要的分包用来提升后续页面启动速度。一个商品应用可以这样理解。主包首页商品列表我的发布分包商品发布图片裁剪订单分包订单列表订单详情不要把所有页面都塞进主包。但也不要为了分包而分包。首页、tabBar、首屏关键页面一般留在主包低频大功能再考虑拆出去。条件编译要集中不要撒满页面发布多端时平台差异不可避免。uni-app 支持条件编译比如#ifdef H5、#ifdef MP-WEIXIN、#ifdef APP-PLUS。官方文档里也提到条件编译可以用于 JS、模板、CSS、pages.json、static 等场景。但条件编译不是越多越好。错误倾向是每个页面都写一堆平台判断。更好的做法是把平台差异封装成方法。// 文件位置utils/platform.jsexportconstgetShareChannel(){// #ifdef MP-WEIXINreturnwechat-mini-program// #endif// #ifdef H5returnh5// #endif// #ifdef APP-PLUSreturnapp// #endifreturnunknown}页面里只调用getShareChannel()。这样以后平台逻辑改了不需要到处找。发布后要观察不要发完就关电脑发布不是最后一步。发布后至少观察这些。页面白屏率。接口错误率。登录失败率。商品发布成功率。图片上传失败率。小程序审核反馈。应用市场崩溃反馈。如果你暂时没有专业监控也可以先做最朴素的发布记录。// 文件位置docs/release-log.md# 发布记录 ## v1.0.0 - 发布时间 - 发布平台 - 构建环境 - 主要改动 - 影响页面 - 回滚方式 - 发布后观察发布记录的价值不在于形式。而是出问题时你能知道这次到底改了什么。回滚和降级要提前想小项目也要有退路。H5 可以回滚到上一版静态资源。小程序可以视情况回退线上版本或重新提交审核。App 如果已经发到市场回滚成本更高所以更需要灰度、版本控制和服务端降级开关。否是能不能发布新版本观察核心指标是否异常继续扩大范围能否前端快速修复补丁或重新发布回滚旧版本或服务端降级如果某个新功能风险高比如商品发布页改了上传流程可以让后端加一个开关异常时先关闭新入口。不要把所有风险都押在重新发包上。这里容易翻车生产包连着测试接口或者测试包连着生产支付。H5 部署到子路径后静态资源 404。深层页面刷新 404以为是前端路由坏了其实是服务器没回退。CDN 缓存没处理用户一直加载旧 JS。小程序忘记配置 request/uploadFile 合法域名。权限申请和实际功能不匹配审核或用户信任出问题。App 只改versionName没改构建版本号。发布后没有观察指标用户反馈了才知道线上坏了。自己试试给项目加一个config/env.js把开发、测试、生产接口地址集中管理。写一份docs/release-log.md发布记录模板。检查manifest.json和pages.json列出当前项目发布到 H5、小程序、App 分别要改哪些配置。模拟一次 H5 发布后回滚写出你会恢复哪一版文件、清哪些缓存、通知谁验证。这一篇先记住什么uni-app 帮你统一了开发体验。但它没有消灭平台发布差异。H5 看资源路径、路由刷新、缓存和回滚。小程序看 appid、合法域名、包体积、隐私协议和审核。App 看证书、版本号、权限、市场规则和升级策略。所有平台都要先做好环境隔离再做发布记录再做发布后观察。上线不是把代码扔出去。上线是把风险有控制地交给真实用户。

相关新闻

ComfyUI-Manager:5步解锁AI工作流无限潜能,你的节点管理烦恼终结了吗?

ComfyUI-Manager:5步解锁AI工作流无限潜能,你的节点管理烦恼终结了吗?

ComfyUI-Manager:5步解锁AI工作流无限潜能,你的节点管理烦恼终结了吗? 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remo…

2026/10/15 18:56:30 阅读更多 →
从50TPS到秒杀:Jmeter性能压测实战与瓶颈分析

从50TPS到秒杀:Jmeter性能压测实战与瓶颈分析

1. 项目概述:从50TPS到秒杀场景的性能压测实战 最近在复盘一个电商项目的性能测试案例,核心指标是要求系统在常规负载下稳定支持50 TPS(每秒事务数),同时还要模拟“秒杀”这种极端高并发场景。这个需求非常典型&#x…

2026/10/15 18:58:38 阅读更多 →
OpenClaw升级安装教程,TopClaw3分钟自动更新满血内核

OpenClaw升级安装教程,TopClaw3分钟自动更新满血内核

升级OpenClaw前,先搞清楚这几点用过OpenClaw的朋友应该都有这种感觉——它确实能干,但每次版本一更新,手动折腾依赖、配置环境、还要担心兼容性问题,真的挺磨人。我之前也踩过不少坑,比如升级到一半报错、旧配置失效、…

2026/10/15 19:44:19 阅读更多 →

最新新闻

MATLAB EMD工具箱实战:从经验模态分解到HHT时频分析

MATLAB EMD工具箱实战:从经验模态分解到HHT时频分析

简介:Matlab EMD经验模态分解工具箱,面向信号处理、故障诊断与振动分析领域的研究人员与工程师,用于对非线性、非平稳信号做自适应分解并提取有物理意义的本征模态函数分量。压缩包共38个文件,其中10个m脚本承担核心算法与在线/局…

2026/10/16 19:42:22 阅读更多 →
教务管理系统源码解析:技术选型、数据库设计与二次开发避坑指南

教务管理系统源码解析:技术选型、数据库设计与二次开发避坑指南

简介:这是一套面向计算机专业学生与Java Web开发者的教务管理系统完整源码,适合作为课程设计、毕业设计或企业级项目练手参考,帮助理解教育管理信息化的业务逻辑与技术落地。资源包共746个文件,约5.46MB,涵盖html、css…

2026/10/16 19:42:22 阅读更多 →
E7-2 AXOS everyPON 数据服务实施:从订户模板到策略映射实战指南

E7-2 AXOS everyPON 数据服务实施:从订户模板到策略映射实战指南

简介:Calix E7-2 AXOS everyPON数据服务实施课程的官方介绍文档,面向负责二层数据服务部署的技术员、网络运营者、规划师与工程师。资源包内仅含1个PDF文件,容量74KB,以精炼篇幅浓缩了4小时讲师授课的核心内容:E7-2 AX…

2026/10/16 19:42:22 阅读更多 →
gemma-skills新手必读:Google官方两大技能如何让AI Agent具备Gemma开发与微调能力

gemma-skills新手必读:Google官方两大技能如何让AI Agent具备Gemma开发与微调能力

【免费下载链接】gemma-skills Skills for the Gemma and model/agent interactions 项目地址: https://gitcode.com/gh_mirrors/ge/gemma-skills 点击查看 免费下载 如果你是刚接触 Gemma 模型的新手,gemma-skills 会是一个绝佳的起点。这是 Google 官…

2026/10/16 19:41:22 阅读更多 →
DeepSeek-V3-W4A8-Pruing权重文件怎么读?safetensors三分片结构与index索引完全解析

DeepSeek-V3-W4A8-Pruing权重文件怎么读?safetensors三分片结构与index索引完全解析

【免费下载链接】DeepSeek-V3-W4A8-Pruing 项目地址: https://ai.gitcode.com/hf_mirrors/vllm-ascend/DeepSeek-V3-W4A8-Pruing 点击查看 免费下载 初次接触 DeepSeek-V3-W4A8-Pruing 模型仓库时,面对 3 个 safetensors 分片文件、一个 578KB 的 index…

2026/10/16 19:41:22 阅读更多 →
整车控制器开发源代码:模块划分、状态机设计与工程落地

整车控制器开发源代码:模块划分、状态机设计与工程落地

简介:整车控制器(VCU)开发源代码包主要面向电动汽车与混合动力汽车控制系统的开发者、算法工程师及嵌入式软件研究者,用于解决VCU底层驱动、控制策略、状态机管理与故障处理等核心开发问题。包内文件共88个,以C源文件、…

2026/10/16 19:40:21 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →