微信小程序开发指南
从零到上架的实战地图。覆盖小程序最常被卡住的几个点:项目结构、数据绑定、云函数、审核驳回、流量主开通。
适用场景
- 想做一个工具类/内容类小程序,但没写过小程序,不知道从哪下手。
- 已有网页/H5,想移植成小程序。
- 卡在审核驳回、不知如何改能通过。
- 想通过流量主(广告)变现,不确定门槛与接入方式。
核心原则
- 先有 AppID 再写代码:没有 AppID,很多能力(云开发、支付、广告)都不可用。
- WXML 不是 HTML:用
wx:for、wx:if、数据绑定{{}},别套网页思维。 - 逻辑放 JS,样式放 WXSS:WXSS 基本是 CSS 子集,但单位用 rpx(750 基准)。
- 云开发能省后端:不想搭服务器时,云函数 + 云数据库是冷启动最省事的组合。
- 审核是硬门槛:涉及用户头像昵称、位置、付费、医疗等类目,都要对应资质,提前准备。
步骤
- 注册与配置:注册小程序账号,拿到 AppID;在开发者工具里新建项目绑定 AppID。
- 搭页面骨架:在
app.json的pages里声明页面,每个页面对应.wxml/.wxss/.js/.json四件套。 - 写页面逻辑:WXML 用
{{data}}绑定、wx:for列表、bindtap事件;JS 里setData更新视图。 - 接数据层:简单需求用云开发——建云数据库集合,写云函数读写成接口,前端用
wx.cloud调用。 - 真机预览与调试:用开发者工具预览,再用真机扫码测试,重点验交互与性能。
- 上传与提审:上传代码填版本号,提交审核;按驳回原因逐条改(常见:类目不符、功能不完整、诱导分享)。
- 发布与变现:审核通过后发布;UV 达标后可在后台开通流量主,接入广告组件变现。
示例
示例 1:页面四件套最小结构
pages/index/index.wxml → <view>{{title}}</view><button bindtap="onTap">点我</button>
pages/index/index.js → Page({ data:{title:'你好'}, onTap(){ this.setData({title:'已点'}) } })
pages/index/index.wxss → .btn{ color:#07c160 }
pages/index/index.json → { "navigationBarTitleText": "首页" }
并在 app.json 的 pages 第一项声明 "pages/index/index"。
示例 2:云函数读数据
// cloudfunctions/getList/index.js
const db = wx.cloud.database()
exports.main = async () => {
const res = await db.collection('notes').limit(20).get()
return res.data
}
// 前端调用:wx.cloud.callFunction({ name:'getList' })
示例 3:审核驳回与对策
> 驳回:"(3.1.2) 内容不完整" → 对策:补全核心功能,别只放一个空页面。
> 驳回:"(2.1) 类目选择不符" → 对策:在后台选对服务类目,必要时补资质。
> 驳回:"诱导分享" → 对策:去掉"分享得XX"类文案与强制分享按钮。
边界
- 一个身份证最多注册 5 个小程序个人账号,规划好数量再注册。
- 个人主体不支持支付、不支持部分类目(如医疗、金融),企业主体才能解锁。
- 云开发有免费额度,超量需付费,冷启动先吃免费档。
- 流量主有 UV 门槛(通常需一定累计用户),未达标先打磨留存。
- 小程序不能做"AI 问答类"实时聊天等受限场景,需确认类目合规。
- AppID、密钥、支付商户号等敏感信息不要写进前端代码或公开仓库。
- 本指南讲方法,不替你写完整业务代码,复杂逻辑请按步骤自行实现。
自检清单
- [ ] 是否已拿到 AppID 并绑定到项目?
- [ ] 页面是否都在
app.json的pages中声明? - [ ] 数据更新是否统一走
setData? - [ ] 数据层是否按需求选了云开发或自有后端?
- [ ] 真机扫码是否验证过核心交互?
- [ ] 提审前是否自查类目与资质?
- [ ] 敏感信息是否未出现在前端代码中?
- [ ] 是否了解流量主开通门槛再做变现预期?