前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >『云函数』基本使用

『云函数』基本使用

原创
作者头像
BNTang
修改2024-01-25 09:15:15
4892
修改2024-01-25 09:15:15
举报
文章被收录于专栏:『云开发』

1.前言

经前面几篇文章的介绍,已经给大家介绍了云开发中的云数据库与云存储,那么了解完了云数据库云存储之后,接下来我介绍一下云开发中的另外一个重要的功能,云函数。

2.什么是云函数

要介绍清楚这个云函数之前,首先得要先来看看过去我们用服务器来存储数据与文件的时候,我们是怎么做的,我们来看一下下面这张图。

可以看到根据图中信息,可以知道,首先我们有着自己的一台服务器,然后在自己的服务器上,安装了对应的数据库这类似的东西,数据库里面存储的就是结构化数据。

那么除此之外这个服务器上,是不是还可以存储一些文件数据,所以在图中可以看到这两块,一块是数据库,一块是文件数据,这两块都是存储在服务器上的,这个是 过去 我们使用自己服务器的时候。

好,直到如今,我是不是介绍了云开发,在云开发当中,他是不是给我们提供了云数据库与云存储这两个功能,随着而来我们的演示图也就变成了下面这样。

这样一来是不是将我们自己服务器上面的功能给替换掉了,替换掉了之后还没完,无论是云数据库还是云存储,都是用来存储数据的,处理不了数据,就比如说我存储了一些结构化的数据,我现在需要对这些结构化的数据进行加工处理,这个时候我们该怎么办?

这个时候我们的客户端是不是得要发送一个请求到服务器上(云),把我们需要处理的数据拿回来,拿回来之后就是在本地对数据进行加工处理,那本地加工,本地是什么呢?本地就是我们的一个手机,这个时候问题又来了,手机的性能有电脑的性能好吗?是不是肯定没有,那么没有的话,过去我们想对这些数据进行处理加工,我们是怎么做的呢?

是不是在服务器上,我们可以写一些代码,然后在服务器上运行,然后我们的客户端发送请求到服务器上,服务器就会对我们的数据进行加工处理,然后将加工处理之后的数据返回给我们的客户端,这样一来,我们的客户端就不需要做太多的事情了,我们的客户端只需要发送请求,然后接收数据就可以了。

现在的这个演示图就可以演变成下面这样:

这样演变一来,我们的数据就是在服务器上处理也就是电脑上面处理,这个时候我们的性能是不是就好了,但是现在我们如果用云开发之后,这个云开发提供的云数据库和云存储是不是不能处理数据。

我们是不是只能在本地处理,也就是在手机上处理,这个时候性能是不是就差了,所以说为了解决这个问题,给我们搞了一个云函数出来,那么云函数是什么呢?

云函数是不是就是给云增加了编码的能力,增加了处理数据的能力,这个就是云函数,这个就是云函数的作用。最终的演示图就变成了下面这样:

这个时候云开发中的能力与我们自己搭建的服务器的能力就一样了。

3.云函数的创建

那么怎么创建云函数呢,也非常的简单,前面我说过,如果是云开发的小程序,项目当中有两个目录,一个是 miniprogram 目录这个是编写我们小程序代码的,还有一个是 cloudfunctions 目录,这个目录是用来存放我们的云函数的,所以在这个目录下编写对应的云函数即可。

那么我们现在就来创建一个云函数,我们在 cloudfunctions 目录下创建一个目录,这个目录就是我们的云函数的名字,鼠标右键点击 cloudfunctions 目录,然后选择 新建 Node.js 云函数,然后输入我们的云函数的名字:

这里目前只有 Node.js 云函数,后续会有其他的语言的云函数,这个就不知道了。如果有你就可以选择其他的语言,按照自己的喜好来选择。

这里我是做测试我就起了一个 test:

通过观察这个云函数中有三个文件:

    1. index.js:这个是我们的云函数的入口文件,我们的云函数的代码就写在这个文件当中。
    1. package.json:依赖文件(NodeJs,可以依赖一些其他的库)
    1. config.json:配置文件

3.1.云函数的入口文件

我们现在来看一下这个 index.js 文件,这个文件就是我们的云函数的入口文件,我们的云函数的代码就写在这个文件当中。

官方示例代码:

代码语言:javascript
复制
// 云函数入口文件
const cloud = require('wx-server-sdk')

// 使用当前云环境
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}

在这个代码中首先引入了 wx-server-sdk 这个库,这个库是不是就是用来操作云开发的,然后是指定当前使用的云环境,然后在这个文件中导出了一个 main 函数,这个函数就是我们的云函数的入口函数,这个函数中有两个参数,一个是 event,一个是 context,这两个参数是什么呢?

  • event:这个参数是我们的客户端调用云函数的时候传递的参数,这个参数是一个对象,这个对象中包含了客户端传递过来的参数。
  • context:这个参数是一个对象,这个对象中包含了一些上下文的信息,比如说当前用户的 openid,当前用户的 appid,当前用户的 unionid,这些信息都是在这个 context 对象中。

这两个参数后续在介绍,如上代码这是官方的示例,我们先给删掉,自己来编写一个:

代码语言:javascript
复制
// 云函数入口文件
const cloud = require('wx-server-sdk')

// 使用当前云环境
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })

function example() {
  return "我是 example 函数";
}

// 云函数入口函数
exports.main = async (event, context) => {
  const res= example();
  return res;
}

我定义了一个 example 的函数,然后在入口函数中进行调用了,假设我们调用这个函数,在函数中处理数据,那么调用者拿到的结果就是已经处理好的,这样是不是就没问题了,这个就是云函数的基本结构。

所以说你要做的事情就是,找到云函数的目录,在云函数目录下创建自己的云函数,在创建的云函数的 index.js 中来编写自己的业务逻辑代码即可,编写好之后怎么办,编写好之后就可以在 main 中进行调用你编写好的业务逻辑,拿到结果返回给调用者。

3.2.上传云函数

通过如上的这么一顿操作,我们的云函数就创建好了,那么我们怎么调用这个云函数呢?也就是想在小程序当中进行使用,可以直接使用吗?我的答案是不可以,为什么不可以呢?

云函数云函数是不是是在云端的,那么我们编写的这个函数是不是仅仅在本地,写好云函数之后我们需要将云函数上传到云上,然后才可以在小程序当中去云里面调用这个函数。

好,这里来简单的做一个云函数使用步骤梳理:

  1. 创建一个云函数
  2. 编写云函数的业务逻辑代码
  3. 上传云函数到云端
  4. 在小程序中调用云函数

现在我已经完成到了,第二步,接下来就是 上传云函数到云端

找到创建的云函数文件夹目录,鼠标右键,选择如上图所示,即可完成上传,因为我们是 NodeJS 代码,所以云当中也需要进行安装。

上传结果如下图,这个不代表已经彻底完成了:

弹出了如下图这个弹框才算是彻底完成:

4.云函数的使用

首先我们找到项目结构的编写小程序代码的目录,找到 miniprogram/pages/cloud-fn/index.wxml, 添加一个调用云函数的按钮:

代码语言:html
复制
<button type="primary" bindtap="onTestTap">调用云函数</button>

然后在 index.js 中编写对应的事件处理函数:

代码语言:javascript
复制
Page({
  async onTestTap() {
    const res = await wx.cloud.callFunction({
      name: 'test'
    });

    console.log(res)
  }
})

在这个函数中,我们调用了 wx.cloud.callFunction 这个函数,这个函数是不是就是用来调用云函数的,这个函数中有一个参数,这个参数是一个对象,这个对象中有一个 name 属性,这个属性的值就是我们的云函数的名字,这个名字是不是就是我们在创建云函数的时候起的名字,打开云控制台,我们可以看到我们的云函数的名字:

运行小程序,点击按钮,可以看到控制台输出了如下的结果:

ok,完毕,如果你更改了云函数的内容,是需要重新上传的,重新上传之后,再次调用云函数,就可以看到最新的结果了。

🐤如果您觉得本文对您有所帮助,欢迎点赞、收藏或分享,您的支持是我创作的最大动力!

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

这篇文章的内容就介绍到这里,期待我们下次的相遇。感谢您花时间阅读,如果有任何问题或想法,欢迎在评论区留言。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.前言
  • 2.什么是云函数
  • 3.云函数的创建
    • 3.1.云函数的入口文件
      • 3.2.上传云函数
      • 4.云函数的使用
      相关产品与服务
      云函数
      云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档