企微应用做小程序还是 H5?低代码应用的载体选择
结论先行:默认选 H5,只有 3 类场景才值得改上小程序:需要蓝牙、NFC、文件系统等硬件级能力,需要在弱网或离线可用,需要分享到微信外部客户。H5 的优势是免审核、改版当天生效;小程序的优势是体验与能力上限,代价是审核周期与包体约束。选型时先问一句"这个功能一年改几次",改得勤就选 H5。
技术选型讨论里最容易出现的偏差,是把载体当成技术偏好。实际上 H5 和小程序在企业微信生态里的差别,主要是发布方式与能力边界,与框架无关。把这两个维度想清楚,答案通常在十分钟内就能定下来。
一、先分清三个入口
很多"小程序还是 H5"的争论,源头是把三个不同入口混为一谈:
- 自建应用(H5):配置在企微管理后台,员工在工作台点开,本质是一个网页,需要配置可信域名,走 OAuth2 免登与 JS-SDK 鉴权;
- 关联的微信小程序:企业微信可以关联并打开微信小程序,员工在工作台或聊天中即可进入,身份获取需按企业微信小程序侧的能力接入;
- 对外分享的小程序:通过微信分享给外部客户,此时走的是微信身份体系,与企微内部账号并不自动打通。
三个入口对应三套身份链路。若一个应用既要给内部员工用,又要给外部客户用,等于要做两套登录与两套数据边界,这一点在选型阶段就要计入工作量。
二、八维能力对比
| 维度 | H5(自建应用) | 小程序 |
|---|---|---|
| 发布更新 | 免审核,改版当天生效 | 需审核,通常 1~7 天 |
| 回滚能力 | 换回上一版本即回滚 | 受审核约束,回滚不即时 |
| 离线可用 | 弱,依赖网络与缓存 | 较好,支持分包与本地缓存 |
| 硬件能力 | 依赖 JS-SDK,能力较窄 | 蓝牙、NFC、文件、相机更完整 |
| 免登方式 | OAuth2 静默授权换身份 | 需按企微小程序侧接口接入 |
| 分享范围 | 企微内为主,出圈需额外配置 | 可分享到微信 |
| 包体限制 | 无硬限制,首屏受网络影响 | 主包体积受限,需分包优化 |
| 调试成本 | 浏览器直接调试,成本低 | 需真机与开发者工具调试 |
表格反映的是通行差异,各接口的具体参数与支持范围以企业微信、微信官方文档为准,两端能力也在持续调整。
三、六个场景的直接结论
不必每次从头推演,按场景对号入座即可:
- 审批、报销、打卡、通讯录查询:H5。高频短会话,改版频繁,不值得为审核等待;
- 外勤巡检、拍照上报、离线表单:小程序。弱网场景多,需要本地缓存撑住;
- 蓝牙打印、门禁、NFC 标签:小程序。H5 侧接口覆盖不足;
- 面向外部客户的商城、预约、会员卡:小程序。可用分享触达微信用户;
- PC 端大表格、复杂看板:H5。桌面端浏览器体验更完整,小程序在 PC 侧入口受限;
- 一周内要上线的试错项目:H5。先验证需求,再决定是否迁到小程序。
四、选 H5 必须做对的四件事
H5 看似简单,出问题的地方高度集中:
- 可信域名与 JS 安全域名:后台配置与实际访问域名必须一致,不一致时鉴权会静默失败,表现为"什么都调不通";
- OAuth2 静默授权:通过
/connect/oauth2/authorize拿 code,再用 code 换 userid,会话用自有 token 维持,不要依赖每次授权; - wx.config 签名:签名用的 URL 要去掉井号之后的部分,且页面路由变化后需重新签名,签名结果建议缓存;
- 内核兼容:企微内置浏览器内核版本与系统浏览器存在差异,避免使用过新的前端 API,关键交互要在真机验证。
五、选小程序绕不开的三条硬约束
- 审核与版本节奏:紧急修复要预留 1~2 天审核缓冲,重大版本建议提前一周提审;
- 包体与首屏:主包体积有上限,图片与静态资源走 CDN,非首屏模块分包加载;
- 能力不能照搬:H5 里能用的 JS-SDK 接口,在小程序侧要换成对应的小程序接口,直接复用代码会调不通。
六、低代码视角:载体不是二选一
如果用的是低代码平台,载体选择的成本会显著下降:同一套页面描述可以分别编译到 H5 与小程序,常见做法是先用 H5 上线验证流程,再把高频、强交互的页面迁到小程序。两者还能混合,小程序通过 web-view 嵌入已有 H5 页面,需要配置业务域名(具体规则以官方文档为准)。
真正的判断标准只有两条:更新频率决定选 H5,能力边界决定选小程序。两条冲突时,优先满足能力边界——体验差会直接导致弃用,而审核等待只是延迟。
FAQs
Q1:企业微信里能直接打开微信小程序吗?
A:可以。企业微信支持关联微信小程序,员工可在工作台或聊天中打开;但身份获取与能力调用要走企业微信小程序侧的接口,不能沿用 H5 的免登逻辑,具体以官方文档为准。
Q2:H5 在企微内能调用摄像头和定位吗?
A:能。通过 JS-SDK 的拍照、定位、扫一扫等接口实现,前提是完成 wx.config 鉴权;部分敏感接口还需要 agentConfig 二次鉴权。
Q3:小程序审核不通过,会影响已经上线的版本吗?
A:不影响。审核失败时线上版本继续运行,但新功能与紧急修复会被延后。因此关键业务要预留 1~2 天审核缓冲,把热修复交给 H5 承载是常见做法。
延伸阅读
- 多平台一致性——H5 与小程序共用一套设计规范的做法
- 跨平台框架对比——不同跨端方案在企微场景下的适配差异
- IM 生态低代码的绑定风险:数据、账号与应用商店的三种锁定——载体选择如何影响长期迁移成本
