前言:小程序云开发推出时间挺长了,还是很有必要学一学的,之前的小程序开发模式还是传统的前后端开发模式,后端的开发习惯仍然不变,前端就像是换了一个框架。而且这个框架让前端更加轻松。
这次推出的云开发很牛的地方就在于前端开启零后端模式,想想传统的前后端交互模式中,后端主要负责什么?
- 操作数据库存储,主要存取 JSON。
- 文件存储,图片、视频、word、Excel 等。
- 写接口配合前端做数据交互,整合数据库和文件系统。
简单的后端就是这些工作,而小程序一般不会牵扯类似 PC 端单页面那样的逻辑复杂。微信给出的云开发文档的开发逻辑更像是 NodeJs + mongoDB,做后台开发,所以如果你熟悉 NodeJs 开发,那会很轻松的上手。
一、云开发基础
云开发既然是干后台的是,想想也大致知道包含哪几部分:
能力 | 官方说明 | 我的补充 |
---|---|---|
云函数 | 无需自建服务器 在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码 | NodeJs写的逻辑代码 |
云数据库 | 无需自建数据库 一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库 | mongoose数据库 |
云存储 | 无需自建存储和 CDN 在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理 | NodeJs的文件系统模块 |
云调用 | 原生微信服务集成 基于云函数免鉴权使用小程序开放接口的能力,包括服务端调用、获取开放数据等能力 | 云端调用微信官方接口例如微信支付 |
除了微信的云调用,其他三部分是 NodeJs 开发的基本素养,没啥难的,不仅不难还特简单的,因为之前使用 NodeJs 写代码是单纯的写逻辑,微信这套东西逻辑虽然是大头但是不是全部了,有一部分配一下就 OK 了,而且逻辑代码方面也有官方给的代码,着实轻松不少。
二、云函数
因为云函数是逻辑代码,只有通过它才能连接数据库和云存储等。这就像在开发 NodeJs 的时候,你的写 JS 逻辑代码,使用 HTTP 模块搭建服务器,FS 模块做文件系统,通过 mongoose 来连接 mongoDB 数据库。
三、开通云开发
1. 使用云开发新建项目的时候,必须使用真实的 AppID,不支持测试号
2. 后端服务
为了更好的学习,先不用系统提供的云开发环境,自己手动创建。
3. 创建一个云服务环境
- 点击云开发 打开 云开发控制台,点击 开通按钮,然后同意云开发协议。
- 很重要的云服务 ID
这个 环境 ID 可以想象成服务器的 IP 地址,前端在连接后端的时候虽然用的是域名,但是说到底还是 IP 地址。
说到这我们知道服务器一般会配备运维成员,做做域名解析,代码部署啥的,但是你发现没我们不需要解析域名,代码也是一键上传、后台直接发布完事。由此可见一个公式:
下面是我们创建好环境的页面:
目前为止相当于服务器买好了,接下来需要配置一下环境就能用了:
4. 配置环境
-
project.config.json
中增加了字段cloudfunctionRoot
用于指定存放云函数的目录,我指定的是"cloudfunctionRoot":"cloud",
- 根据
cloudfunctionRoot
指定的目录来创建云开发目录,然后在更目录新建文件夹cloud
,cloud 的图标明显不同,又一个云☁️。
- 新建云函数
cloud 文件夹上右击新建云函数,文件名字就 add 。
好了到此环境基本差不多了。
四、加法器
演示一个案例:想想如果使用 NodeJs 配合前端来实现一个加法器, NodeJs 的逻辑代码应该是怎么样的?
- 使用 http 模块开启一个服务端口
- 写路由清单
- 逻辑交互,后端做加法
- 最后结果返回
如果在小程序里面怎么做?
- 配置环境
-
app.js
中onLaunch
生命周期初始化
//app.js
App({
onLaunch: function(){
wx.cloud.init({
env: 'student-test-bbt13',//环境ID
traceUser: true,
})
}
})
- 然后在小程序里面简单的搭建一个加法器
index.wxml
<!--index.wxml-->
<view class="container">
<view>计算结果为 {{sum}}</view>
</view>
<button bindtap="add" type="primary" >按我</button>
index.js
Page({
data:{
sum: 0
},
add(){
const that = this;
wx.cloud.callFunction({
// 云函数名称
name: 'add',
data: {
a: 10,
b: 99
},
success: function(res) {
console.log(res)
that.setData({
sum : res.result.sum
})
},
fail: console.error
})
}
})
- 修改云函数
云函数修改完一定要右击上传。
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
return {
sum: event.a + event.b
}
}
- 演示效果
五、删除云函数,本地进行同步的时候报错
正确做法是:
- 先在开发者工具
cloudfunctionRoot
对应的目录,点同步云函数列表,这样本地的云函数列表就同步到云端。
- 然后在上传部署相关云函数
最后
-
wx-server-sdk
专门是为云调用提供的 - 云函数目录下的
config.josn
文件是配置云调用权限的,参考 云调用微信官方文档
跑完这个流程你会发现云函数功能几乎和利用 NodeJs 开发后台没有差别。
不知道这时候聪明的你有没有发现一个问题,微信小程序云开发很强大,但是如果业务涉及到多平台怎么办。支付宝和微信都有自己的云开发这不增加了我们开发成本。这时候你就可以考虑 uniCloud 了。