微信小程序云开发之云函数
上篇文章中提到有关微信小程序云开发中云函数的运用,而今天我们就来通过这篇文章较为深入地了解它。
开始介绍之前,请先确保已开通小程序的云开发功能,以便能跟着本文一起定义和调用云函数。具体开通方式详见 → 微信官方文档·小程序。
一、什么是云函数?
云函数 即在云端(服务器端)运行的函数,它就相当于通常我们所熟知的后端提供的可供前端调用的接口,只不过这里的“接口”是部署在小程序提供的云服务器上,而且它也有自己独特的调用方式,具体调用方法后面会讲到。
更多云函数相关内容详见 → 微信官方文档·小程序。
二、如何定义云函数?
1. 新增配置字段
在开始定义云函数之前,首先你得告诉小程序你将在哪个目录下定义你的云函数:
// 在 project.config.json 文件中添加以下字段
{
"cloudfunctionRoot": "cloudbase/"
}
这里的cloudbase/
就代表你的云函数所在目录,接下来我们所有的云函数都要在这个目录下定义。
2. 新建云函数目录
在新建云函数目录之前,需要先保证上面配置中的cloudbase
目录存在(若没有须新建),然后再在cloudbase
目录下新建云函数目录,目录名称即为云函数名称。
假设我接下来打算定义一个两数相加的云函数,上图中add
目录即为新创建的云函数目录,云函数名称就叫add
。
3. 定义云函数
在云函数目录下新建index.js
文件,然后就可以在该文件中定义你的云函数了。
exports.main = async (event, context) => {
return event.a + event.b;
}
云函数有两个形参:event
和context
,其中event
对象中含有所有调用云函数时所传参数,此外还自带一个userInfo
属性,而userInfo
属性下保存有小程序的appId
和用户的openId
,context
对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。
例如,我们可以直接通过如下云函数获取用户的openId:
exports.main = async (event, context) => {
return event.userInfo.openId;
}
有时候云函数中可能需要调用其他依赖,这时我们就需要安装依赖,比如最常用的wx-server-sdk
:
const cloud = require('wx-server-sdk');
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
});
4. 部署云函数
右键点击云函数目录,选择 创建并部署 即可。
三、如何调用云函数?
1. 小程序端内调用
小程序内调用调用云函数有两种方式:手动调用 和 自动调用,这里以调用上例定义的云函数add
为例,简单介绍下 手动调用 方式。
wx.cloud.callFunction({
// 云函数名称
name: 'add',
// 传给云函数的参数
data: {
a: 1,
b: 1
},
success: function(res) {
console.log(res.result.sum); // 2
},
fail: console.error
})
有关 自动调用 方式可以前往 微信小程序开发之订阅消息 查看,这里不再赘述。
2. 小程序端外调用
小程序内定义的云函数,不仅小程序端内可调用,端外也能调用,只不过不能直接调用,需要通过服务端调用小程序提供的 HTTP API 触发云函数来实现间接调用。
具体端外调用云函数方式详见 → 微信官方文档·小程序。
四、uni-app 如何开发云函数?
此处不介绍uni-app
自身的 云开发uniCloud中的云函数,而是介绍如何在uni-app
中创建微信小程序云函数目录。
其实方法非常简单,只需把云函数根目录建在static
目录下即可。
然后再在manifest.json
的源码视图中的mp-weixin
字段下添加cloudfunctionRoot
字段:
结束语
有了云开发之后,开发小程序的前端工程师们就能轻松地同时解决前后端开发问题,而云函数又是云开发中非常重要的一部分,故有此文。
发表评论 (审核通过后显示评论):