微信小程序云开发(四)

在本系列的上一篇文章中,带大家一起初步体验了小程序云开发,特别是云函数的基本功能。在本文中,将会进一步给大家介绍云函数更深入的知识,以便为接下来构建完整案例做准备。

云函数的特点

云函数即在云端(服务器端)运行Javascript代码,当被小程序端调用时执行。从上一篇文章的案例中可以看到,什么一个云函数典型的声明方式是:

1
2
3
4
5
// 云函数入口函数
exports.main = async (event, context) => {

return <返回值>
}

实际上,我们是按云函数的接口标准定义了一个以 event(事件) 和 context (上下文) 为参数的函数,默认的定义方式使用了 ES7 的 async/await 语法来处理函数中可能存在的异步操作,简化开发。函数体就是我们写逻辑代码的地方。

在云开发环境下,云函数具有以下一些显著的特点:

  1. 一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源。
    从上一篇文章的案例我们可以看到,每个云函数实际上是包含在一个同名的目录中的,一个目录可以包括多个js文件和一个配置文件:package.json, 默认的入口指向index.js文件。 这种组织方式其实和Node.js的一个项目很相似。

  2. 各云函数完全独立;可分别部署在不同的地区。又可相互调用
    一个项目中,开发人员可以开发多个云函数,这些云函数不但可以从客户端调用还可以在服务端相互调用,就好像微服务架构一样。

  3. 能操作云数据库和云存储
    作为应用的后台逻辑模块,云函数可以轻松的访问云数据库和云存储。

  4. 能调用外部服务
    云函数中还可以使用Node.js中的 Http Client 包, 访问企业原有的 HTTP 服务或第三方提供的 HTTP 服务,实现了与企业系统的集成。

  5. 与微信登录鉴权的无缝整合与微信登录鉴权的无缝整合
    从上一篇文章的例子可以看到,通过简单的调用就可以取到微信中的鉴权信息,非常简单,方便。

  6. 开发者无需购买、搭建服务器
    开发者不需要额外购买服务器,维护服务器,只需要根据直接的用量设定环境配额即可。极大的减轻了维护量。

  7. 支持云调用
    云调用是云开发提供的基于云函数使用小程序开放接口的能力,支持在云函数调用服务端开放接口,如发送模板消息、获取小程序码等操作都可以在云函数中完成。更多关于云调用的内容将会在后续的文章中详细介绍。

  8. 支持本地测试和云端测试
    云函数在开发中支持本地和云端两种测试方式,这两种方式分别用在不同的场景下可以加速系统的开发。详细的操作方式我们会在后续的文章中给大家详细介绍。

  9. 可以使用很多现成的Nodejs库
    有了这个功能,云函数的开发可以借助于Node.js社区成熟的代码库,提高开发效率。

云函数通常用来实现那些功能

根据上述云函数的特点,我们通常使用云函数来完成一下一些应用(业务)功能:

  1. 包含(处理)业务逻辑
  2. 访问云数据库
  3. 访问云存储
  4. 与微信鉴权集成
  5. 借助云函数可相互调用的特点,将复杂业务逻辑分散到多个云函数中,提高系统的可可复用性,鲁棒性,维护性。
  6. 借助云函数的定时触发特点,实现后台定时任务。

服务端API介绍

从上一篇文章的案例中可以看到,在云函数中进行相关资源访问时,需要使用服务端的API, 这些API大致分为以下几类:

  1. 初始化
    在云函数中,调用云开发各 API 前,需先调用初始化方法 init 一次(全局只需一次)
    1
    2
    3
    const cloud = require('wx-server-sdk')

    cloud.init()

在init函数中,我们也可以指定具体的环境,比如:

1
2
3
4
5
const cloud = require('wx-server-sdk')

cloud.init({
env: 'test'
})

这里的’test’是使用云开发控制台建立的环境的名称。

  1. 工具类
    辅助完成某些特点功能系统类,包含在 cloud 中,例如常见的获取用户鉴权信息就是通过 cloud 中的 getWXContext() 函数完成的。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    exports.main = async (event, context) => {
    const {
    OPENID,
    APPID,
    UNIONID
    } = cloud.getWXContext()

    return {
    OPENID,
    APPID,
    UNIONID
    }
    }

当然,以上代码只是演示了通过API可以非常方便的获取这些信息,在真实的应用开发中,处于安全考虑,大家尽量不要将这些鉴权信息返回给客户端。

  1. 数据库访问
    云开发提供了丰富的数据库操作 API,包括对数据库的维护,数据的访问等,我们将在接下来的文章中用案例来详细介绍。

  2. 访问存储
    云开发提供了一系列的API用于访问存储,包括: 上传文件,下载文件,删除文件及换取文件的临时链接等。

客户端API介绍

除了以上的服务端API,小程序云开发也为客户端(小程序端)提供了丰富的API接口,通过这些接口,客户端可以方便的访问云端的各种资源。这些API包括:

  1. 初始化

客户端与云端资源访问相关的API被包装在全局对象 wx 的 cloud 属性中。在应用中,我们需要进行一次全局的初始化:

1
2
3
wx.cloud.init({
env: 'test'
})

  1. 访问云数据库
    云开发提供了丰富的数据库操作 API,包括对数据库的维护,数据的访问等
  1. 访问云存储

客户端也提供了一系列的API用于访问存储,包括: 上传文件,下载文件,删除文件及换取文件的临时链接等。

  1. 调用云函数

如在上一篇文章中的案例代码:

1
2
3
4
5
6
7
8
9
10
wx.cloud.callFunction({
name: 'hello'
}).then(res => {

this.setData({
greeting: res.result
})
}).catch(err => {
console.error(err)
})

下一步

在下一篇文章中,将会带大家一起构建一个相对完整的案例。

本文标题:微信小程序云开发(四)

文章作者:晨星

发布时间:2019年06月25日 - 11:06

最后更新:2020年05月28日 - 16:05

原始链接:https://www.mls-tech.info/weapp/weapp-cloud-development-4/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。