小程序 · 云开发已经上线到现在也已经快有两年了,期间自己也基于云开发发布了几个小程序,总得来说,对于前端开发者来说,确实方便了很多。不用买服务器、域名,不需要搭建数据库、静态存储应用。通过平台提供的简 API 就可以进行核心业务的开发。
之前,如果我们想要开发一个小程序,运维人员需要考虑买什么样的服务器,匹配哪些资源,比如存储应用、数据库等,后端开发人员需要编写服务接口,前端人员需要编写页面,对接后端提供的接口,这个工作流程下来,需要至少一个月的时间。有了“小程序 · 云开发”以后,开发者不用考虑后端复杂的技术操作,一个前端开发者就可以轻松的完成从无到有、从开发到发布的过程。
1 小程序注册
如果之前注册了小程序或者有小程序APPID的用户可以直接忽略这步。
首先要去注册个小程序,如果开发者工具选择测试号,是不能体验云开发的。小程序注册地址如下:
https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN&token=
选择小程序
填写注册信息,激活邮箱,基本算是已经注册完成。
这里需要说明下,一个企业最多可以注册50个微信小程序;个体工商户最多可以注册5个小程序;
注册完成后,扫码登录,在把基本信息设置下,就可以在设置里可以看到APPID。
2 搭建基础环境
上面我们已经有了小程序,接下来就是创建小程序基础环境,下载微信开发者工具:
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
首次登录或者长时间未使用,需要微信扫一扫登录,这样才能拿到你的微信号是否有权限开发小程序。
新建小程序项目,选择后端服务 -“小程序 · 云开发”
等待项目初始化完成,目录结构如下
├── /cloudfunctions/ # 云函数 ├── /miniprogram/ # 前端代码 │ ├── /images/ # 图片等资源 │ ├── /pages/ # 页面目录 │ ├── /app.js # 全局配置 │ ├── /app.json # 全局配置 │ ├── /app.wxss # 全局样式文件 ├── /project.config.json # 项目配置文件
复制
默认新建项目是没有云环境的,需要我们自己初始化,并创建环境名称。
项目里使用创建的环境,在app.js文件配置
onLaunch: function () { if (!wx.cloud) { console.error('请使用 2.2.3 或以上的基础库以使用云能力') } else { wx.cloud.init({ env: 'prd-yymsa' // env: 'dev-zvjun' }) } },
复制
我创建了两个。一个是开发环境,一个是生产环境,并且一个小程序也只能创建两个,在之前,环境只能创建,不能删除,现在也已经支持删除。
到这里,我们基础环境已经搭建完成,接下来就是如何编写代码了。
3 编写逻辑代码
首先需要简单了解下云开发概念及提供哪些能力,云开发弱化后端和运维概念,就是我们不需要管理服务器,只需注重我们的业务流程。云开发提供云函数、数据库、存储和云调用这几个能力。
详细就不在这里讲了,官方文档已经很详细了,需要详细了解的请移步云开发教程地址:
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html
1.获取用户
cloudfunctions目录新建Node.js云函数,名字getUser,内容如下
1 const cloud = require('wx-server-sdk') 2 cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) 3 const db = cloud.database() 4 exports.main = async (event, context) => { 5 const wxContext = cloud.getWXContext() 6 return await db.collection('user').where({ 7 openid: wxContext.OPENID 8 }).get().then(res => { 9 return res 10 }) 11 }
复制
第一行,引入sdk
第二行,使用设置的云函数环境
第三行,初始化db
第四行到最后,这里面就是我们要写的逻辑,这里是返回user表的指定openid的值
一个简单的查询用户接口就完成了。
2 新增用户
cloudfunctions目录新建Node.js云函数,名字addUser,内容如下
1 const cloud = require('wx-server-sdk') 2 cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) 3 const db = cloud.database() 4 exports.main = async (event, context) => { 5 const wxContext = cloud.getWXContext() 6 return await db.collection('user').add({ 7 data: { 8 openid: wxContext.OPENID, 9 nickName: event.nickName, 10 gender: event.gender, 11 language: event.language, 12 city: event.city, 13 province: event.province, 14 country: event.country, 15 avatarUrl: event.avatarUrl, 16 role: "user" 17 }, 18 }) 19 }
复制
这里也不用过多解释,第一、二、三行,都一样、四行到最后是向user表插入数据。
3 更新用户
cloudfunctions目录新建Node.js云函数,名字updateUser,内容如下
1 const cloud = require('wx-server-sdk') 2 cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) 3 const db = cloud.database() 4 exports.main = async (event, context) => { 5 const wxContext = cloud.getWXContext() 6 return await db.collection('user').where({ 7 openid: wxContext.OPENID 8 }) 9 .update({ 10 data: { 11 nickName: event.nickName, 12 gender: event.gender, 13 language: event.language, 14 city: event.city, 15 province: event.province, 16 country: event.country, 17 avatarUrl: event.avatarUrl 18 }, 19 }) 20 }
复制
代码基本和新增用户一样,只不过是我们这次要在插入的是指定openid的值。
到这里,新增、修改、查询接口已经完成了、接口写完,我们还需要同步云函数到指定环境,接下来就是我们写前端调用了。
4 编写调用代码
下面这个页面是我小程序的个人中心页面,头像这块的逻辑是用户如果首次使用小程序,则需要登录,如果不是,之后就不在需要点击登录,直接获取用户信息,毕竟云开发是可以直接获取用户openid,
逻辑理通就开始写我们的调用代码
gologin(e) { let that = this wx.cloud.callFunction({ name: 'getUser', }).then(res => { if (res.result.data == '') { wx.cloud.callFunction({ name: 'addUser', data: { nickName: e.detail.userInfo.nickName, gender: e.detail.userInfo.gender, language: e.detail.userInfo.language, city: e.detail.userInfo.city, province: e.detail.userInfo.province, country: e.detail.userInfo.country, avatarUrl: e.detail.userInfo.avatarUrl } }).then(addres => { that.setData({ userInfo: e.detail.userInfo }) wx.setStorageSync('userInfo', JSON.stringify(e.detail.userInfo)) }) } else { that.setData({ userInfo: res.result.data[0] }) wx.setStorageSync('userInfo', JSON.stringify(res.result.data[0])) } }) },
复制
这个方法也比较简单,先去查询用户,如果没有,我就新增,如果有,就缓存本地。更新的方法就不展示了,用法基本一样。最终效果可以参考小程序【口袋工具箱】
5 总结
简单理解,就是腾讯云把小程序开发的服务端已经搭好,开发者看不到、也不需要看到后台架构如何搭建,更不用操心后台的稳定性和安全性问题,直接调用接口,写小程序端代码就可以了。小程序 · 云开发 真正的解放了开发者,开发效率大大提升,交付流程更加便捷,所有的云资源都集成在微信开发者工具中,直接开发->测试->预览->上线,以至于我一个前端都可以轻松完成整个项目。
原创声明,本文系作者授权云+社区发表,未经许可,不得转载。