为什么选择云开发
传统小程序开发需要自己搭建服务器、配置数据库、写接口、搞域名备案……对一个产品经理来说,光是后端这一关就能劝退 90% 的人。
云开发直接给你三件套:
- 云数据库 — JSON 文档型数据库,跟写 JS 对象一样自然
- 云存储 — 5GB 免费空间,上传下载一条 API 搞定
- 云函数 — Node.js 运行时,复杂的业务逻辑丢到云端跑
不用管服务器,不用管运维,专注产品本身。
第一步:环境准备
三件事,按顺序来:
- 注册小程序账号 → mp.weixin.qq.com
- 下载微信开发者工具
- 新建项目时勾选「使用云开发」
建议用企业主体注册,个人主体有部分 API 限制(比如支付)。
第二步:初始化云开发
在 app.js 中一行代码完成初始化:
app.js
// app.js
App({
onLaunch() {
if (!wx.cloud) {
console.error('请使用 2.2.3 以上的基础库')
return
}
wx.cloud.init({
env: 'your-env-id',
traceUser: true,
})
}
})
env 参数是你的云开发环境 ID,在云开发控制台可以找到,别写错了!
第三步:数据库操作
云数据库是 JSON 文档型,操作非常直觉。先拿到集合引用,再调用方法:
database.js
const db = wx.cloud.database()
const todos = db.collection('todos')
// 新增
todos.add({
data: { title: '写周报', done: false }
})
// 查询
todos.where({ done: false }).get()
// 更新
todos.doc('record-id').update({
data: { done: true }
})
// 删除
todos.doc('record-id').remove()
集合权限默认是「仅创建者可读写」,可以在控制台改成「所有用户可读」等模式。开发阶段建议先用宽松权限,上线前再收紧。
第四步:云函数实现业务逻辑
有些操作不适合放前端(比如权限校验、数据聚合),这时候用云函数:
cloudfunctions/getStats/index.js
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event) => {
const db = cloud.database()
const count = await db.collection('todos')
.where({ done: false })
.count()
return { total: count.total }
}
前端调用:
页面中调用
wx.cloud.callFunction({
name: 'getStats',
}).then(res => {
console.log(res.result.total)
})
第五步:云存储管理文件
图片、文件上传一行代码搞定:
upload.js
// 选择图片并上传
wx.chooseImage({
success: async (res) => {
const filePath = res.tempFilePaths[0]
const uploadRes = await wx.cloud.uploadFile({
cloudPath: 'images/' + Date.now() + '.jpg',
filePath: filePath,
})
console.log('文件ID:', uploadRes.fileID)
}
})
cloudPath 是云端路径,filePath 是本地临时路径。fileID 可以直接用在 <image> 组件的 src 里。
踩过的坑
- 环境 ID 别写错 — cloud.init 的 env 参数写错了不会报错,但所有操作都走默认环境,数据就跑到别的地方去了
- 集合权限 — 默认「仅创建者可读写」,如果前端查不到数据,先检查权限设置
- 云函数超时 — 默认 3 秒超时,复杂查询要在 cloudfunctionconfig.json 里改 timeout
- 数据库索引 — where 查询的字段要建索引,否则大数据量下慢到怀疑人生
总结
云开发对产品经理来说简直是福音——不用管后端,不用管运维,从想法到可运行的小程序,一个周末就够了。
当然它也有局限:复杂业务逻辑、高并发场景、深度定制需求,还是得上传统后端。但对于 MVP 和个人项目,云开发足够了。
如果你也是非技术背景但想快速验证产品想法,强烈建议从云开发开始。