微信小程序云开发之云函数使用
写在前面
最近在做微信小程序的开发工作,遇到了一个需求是由于小程序的每个包有大小限制,在某一些需要使用插件的情况下,使得包的体积超出限制,因此考虑一种将运算逻辑放在云端的方式来优化包体积大小。
云函数使用
准备工作
根据微信开发者工具,新建云开发项目,工具会自动构建一个可以使用云开发的项目。
1、清除附加文件,项目结构如下:
2、确认project.config.json
文件配置了cloudfunctionRoot
字段,该字段指定本地已存在的目录作为云函数的本地根目录。
3、打开工具栏云开发,点击设置,配置云开发环境
4、云函数根目录指定云环境(右键根目录cloudfunctions
),第一个选项配置当前采用的云环境
-----现在可以创建云函数,进行开发了--------
使用方式
1、在云函数目录下新建nodejs云函数,因为云开发主要采用的是Node.js完成的,可以在云函数列表中查看每个函数的运行环境(Nodejs X.X)
2、在云函数的主入口文件中对传入的参数、调用信息和运行状态进行运算等,并将结果返回出来
3、一般情况下,大家举的例子都是加法的操作,但是实际情况需要进行的运算逻辑会比较复杂、多样。因此采用了类的形式将方法运算得到的结果通过主函数返回。如图:
// 云函数入口文件
const cloud = require("wx-server-sdk");
cloud.init();
// 云函数入口函数
exports.main = async (event, context) => {
let num1 = event.num1;
let num2 = event.num2;
let calculate = new Calculate();
return {
add: calculate.add(num1, num2),
minus: calculate.minus(num1, num2),
};
};
class Calculate {
constructor() {}
add(num1, num2) {
return num1 + num2;
}
minus(num1, num2) {
return num1 - num2;
}
divide(num1, num2) {
return num1 / num2;
}
multi(num1, num2) {
return num1 * num2;
}
}
上述代码将类中的方法作为结果返回。
4、调用云函数
getCloudRes(){
wx.cloud.init();
try {
wx.cloud.callFunction({
name: 'Calculate',
data: {
num1: this.data.num1,
num2: this.data.num2,
},
}).then((res)=>{
console.log(res)
});
} catch (e) {
console.error('result', result);
}
}
云函数是异步返回的,因此也可以通过async
和await
调用
async getCloudRes(){
try {
let res = await wx.cloud.callFunction({
name: 'Calculate',
data: {
num1: this.data.num1,
num2: this.data.num2,
},
});
console.log('res',res)
} catch (e) {
console.error('result', result);
}
}
5、云函数编写和调用部分代码完成后,需要调试云函数是否能运行成功。
方法有两种:一种是将云函数上传到云端,然后调用;另一种是云函数的本地调试(推荐,可以根据本地调试的面板设置断点等,获取每一个的运行情况)
5.1 安装本地调试依赖
1、要进行本地调试需要安装云环境依赖,运行命令npm install
,安装后会多出node_modules
文件夹,放有依赖文件
5.2 开启云函数本地调试,查看调试结果
云函数本地调试和一般的本地调试类型,都可以查看source设置断点,当得到调试结果正确后便可上传到云端。
6、将云函数上传到云端
在云函数目录右键创建并部署,需要注意如果在本地修改了云函数,需要重新手动更新,否则无法同步到云端。上传到云端的函数可以在云函数列表中查看,如图:
后续还会继续说一下云函数调用,云函数之间调用的注意事项。
----TBC----