微信小程序云开发之云函数

上篇文章中提到有关微信小程序云开发中云函数的运用,而今天我们就来通过这篇文章较为深入地了解它。

开始介绍之前,请先确保已开通小程序的云开发功能,以便能跟着本文一起定义和调用云函数。具体开通方式详见 → 微信官方文档·小程序

一、什么是云函数?

云函数 即在云端(服务器端)运行的函数,它就相当于通常我们所熟知的后端提供的可供前端调用的接口,只不过这里的“接口”是部署在小程序提供的云服务器上,而且它也有自己独特的调用方式,具体调用方法后面会讲到。

更多云函数相关内容详见 → 微信官方文档·小程序

二、如何定义云函数?

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;
}

云函数有两个形参:eventcontext,其中event对象中含有所有调用云函数时所传参数,此外还自带一个userInfo属性,而userInfo属性下保存有小程序的appId和用户的openIdcontext 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。

例如,我们可以直接通过如下云函数获取用户的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目录下即可。

static目录下的所有文件不编译

然后再在manifest.json的源码视图中的mp-weixin字段下添加cloudfunctionRoot字段:


结束语

有了云开发之后,开发小程序的前端工程师们就能轻松地同时解决前后端开发问题,而云函数又是云开发中非常重要的一部分,故有此文。

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):