微信小程序和 Web 开发完全是两个物种:
wx.setStorage)wx.navigateTo 那一套)这个 skill 帮你:
不做的事:不替你写完整业务代码(场景太多);不做 UI 设计;不做支付证书申请那种纯账号工作。
| 原生(WXML/WXSS/JS) | Taro(React 风格) | uni-app(Vue 风格) | |
|---|---|---|---|
| --- | --- | --- | --- |
| 学习成本 | 低(看官方文档 1 周) | 中(要会 React) | 中(要会 Vue) |
| 开发效率 | 中 | 高(组件化) | 高(生态成熟) |
| 性能 | 最好(原生) | 好(编译后接近原生) | 好 |
| 多端编译 | 只能微信 | ✅ 微信 / 支付宝 / H5 / RN | ✅ 微信 / 支付宝 / 抖音 / H5 / App |
| 调试 | 最稳(官方工具) | 中(多一层编译) | 中(多一层编译) |
| 生态 | 官方组件 | React 生态 | Vue 生态 + DCloud 插件市场 |
| 适合 | 纯微信 / 性能要求高 | React 团队 / 多端 | Vue 团队 / 跨端跨平台 |
是不是只发布微信?
├─ 是 → 团队会 React 吗?
│ ├─ 会 → Taro(更现代)或 原生(更稳)
│ └─ 不会 → 原生(学习成本最低)
└─ 否(要发抖音 / 支付宝 / H5 / App)→
├─ 团队 React → Taro
└─ 团队 Vue → uni-app(多端兼容性最好)
// 1. 拿临时登录凭证
wx.login({
success: async (res) => {
// res.code 5 分钟有效,要立即发给后端
const { openid, session_key } = await fetch('/api/wx/login', {
method: 'POST',
body: JSON.stringify({ code: res.code })
}).then(r => r.json())
// 保存 openid 到本地
wx.setStorageSync('openid', openid)
}
})
// 2. 后端用 code 换 openid(必须服务端做,不能前端)
// GET https://api.weixin.qq.com/sns/jscode2session?
// appid=xxx&secret=xxx&js_code=CODE&grant_type=authorization_code
坑:
wx.getUserInfo 2021 年起已废弃,必须用 主动触发 单独获取 用户主动授权 → 后端解密// 前端:调起支付
wx.requestPayment({
timeStamp: '...', // 来自后端
nonceStr: '...',
package: 'prepay_id=...',
signType: 'MD5',
paySign: '...',
success: (res) => { /* 支付成功 */ },
fail: (err) => { /* 支付失败/取消 */ }
})
// 后端流程:
// 1. 创建订单到自己数据库
// 2. 调微信统一下单 API(unifiedorder)
// 3. 拿到 prepay_id,组装支付参数 + sign 给前端
// 4. 监听微信回调(必须验签 + 幂等处理)
// 5. 更新订单状态
坑:
// 前端:用户点击触发,请求订阅
wx.requestSubscribeMessage({
tmplIds: ['xxx', 'xxx'], // 后台预先申请的模板 ID
success: (res) => { /* res 里看每个模板是否同意 */ }
})
// 后端:用户操作后发送
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send
{
"touser": "用户 openid",
"template_id": "xxx",
"page": "pages/order/detail?id=123",
"data": { "thing1": { "value": "您的订单已发货" } }
}
坑:
// 同步(小数据量,<10KB 推荐)
wx.setStorageSync('key', value)
const value = wx.getStorageSync('key')
// 异步(推荐用法)
wx.setStorage({ key, data })
// 单 key 上限 1MB,整个小程序 10MB
app.json 里配 __usePrivacyCheck__: truewx.requirePrivacyAuthorize)| 项 | 要求 |
|---|---|
| --- | --- |
| 隐私协议 | 必须 + 用户主动同意(2024 起强审) |
| 用户数据收集 | 必须最小化、必须告知 |
| 第三方 SDK | 必须在隐私协议中列出(如友盟、Bugly) |
| 个人小程序 | 不能做电商 / 金融 / 医疗 / 教育(必须企业资质) |
| 内容安全 | 用户输入文字 / 图片必须过 security.msgSecCheck 内容安全 API |
| ICP 备案 | 服务器域名必须备案(境内)+ ICP 证(电商类) |
按问题类型给:
## 你的问题
(复述)
## 推荐方案
(选型 / 架构 / API / 修复)
## 代码示例
// 注释清楚,不写废话
## 注意事项 / 坑
- 坑 1:XXX
- 坑 2:XXX
## 下一步行动
1. 先做 XXX
2. 然后 XXX
3. 最后 XXX
## 相关资料
- 官方文档:https://developers.weixin.qq.com/miniprogram/dev/...
- 社区帖子:xxx
不主动写完整业务代码(场景太多);不主动给完整 UI 实现。
共 1 个版本