《微信小程序开发从入门到实战》学习四十五

4.4 云函数

云函数是开发者提前定义好的、保存在云端并且将在云端运行的JS函数。

开发者先定义好云函数,再使用微信开发工具将云函数上传到云空间,在云开发控制台中可看到已经上传的云函数。

云函数运行在云端Node.js环境中。

小程序端通过wx.cloud.callFunction方法调用云函数,让云函数在云端运行,云函数最终可以返回到小程序端。

云函数之间互相调用,需要使用服务端API的callFunction方法。

4.4.1 云函数简介

以一个将两个数字相加的函数作为第一个云函数作为示例。

首先,点击pages文件夹,点击右键,点击“在资源管理器中显示”,在打开页面新建文件夹“cloudFunctions”

然后在project.config.json文件新增一个字段,指定cloudFunctions目录为云函数在项目中的目录。代码如下:

{

  "cloudfunctionRoot": "cloudFunctions/"

}

保存以后,cloudFunctions目录图标发生变化,表明这是一个云函数的目录。

右击cloudFunctions目录,选择“新建Node.js云函数”,并将该函数命名为add,

微信开发工具自动创建出同名目录,以及目录中两个文件index.js和package.json。

index.js是add函数的入口文件。package.json是Node.js中的模块描述文件,其内容是一个JSON对象,指定了模块名字、版本、描述等信息。JSON对象的dependencies属性指定了该模块所依赖的其他模块的名字和版本。在云函数可以用npm引入第三方依赖来帮助更快开发。

所有云函数中会默认引入wx-server-sdk的依赖,版本后为latest。在index.js文件中,第一行表示在云函数中引入这个依赖模块的引用对象。其代码如下:

const cloud = require('wx-server-sdk') // cloud对象对应着小程序的wx.cloud对象

服务端API都封装在cloud对象。

在服务端可以通过cloud.init方法实现初始化。代码如下:

cloud.init() // 使用云能力前需要先执行初始化方法

接下来观察云函数的入口函数:

// 云函数入口函数

exports.main = async (event, context) => {

// cloud function body

}

这是箭头函数,async表示这是一个异步函数。event和context是函数的两个参数,大括号是函数的内容。在函数前面加上exports.main=,表示这个函数是这个模块的入口函数。

event指的是触发云函数的事件对象,其中包含小程序端调用云函数时传入的参数,而context对象则包含云函数的调用信息和运行状态,可以用它了解服运行情况。

现在修改云函数,将传入的a和b相加,并作为sum字段返回给调用端,代码如下:

exports.main = async (event, context) => {

const c = event.a + event.b

  return {

    sum: c

  }

}

保存后,需要将这个云函数部署到云端。在云函数魔力add上右击,在右键菜单中,选择“上传并部署:云端安装依赖 ( 不上传node_modules) ”,将云函数上传并部署到线上环境中。

这时,在云开发控制台中的云函数管理页面可以看到刚刚上传的云函数,如下图所示:

部署完成后在小程序使用wx.cloud.callFunction方法调用该云函数。代码如下:

 //  回调风格

 wx.cloud.callFunction({

      name: 'add', // 云函数名称

      data : {

        a: 1,

        b: 2

      },

      success: function(res){

        console.log(res.result) // sum: 3

      },

      fail: function(error){// handle error

      }

    })

// Promise风格

    wx.cloud.callFunction({

      name: 'add', // 云函数名称

      data : {

        a: 55,

        b: 2

      }

    }).then(res => {

      console.log(res.result) // sum: 

    }).catch(error => {// handle error

    })

(实践的时候发现,云函数的任何修改,都不是实时的,都需要点击add上传并部署,调用才能得到正确的结果)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/209564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP地址定位技术为网络安全建设提供全新方案

随着互联网的普及和数字化进程的加速,网络安全问题日益引人关注。网络攻击、数据泄露、欺诈行为等安全威胁层出不穷,对个人隐私、企业机密和社会稳定构成严重威胁。在这样的背景下,IP地址定位技术应运而生,为网络安全建设提供了一…

Python Selenium 自动登入1688

Python Selenium是一个用于自动化Web浏览器操作的库。它提供了一组功能强大的工具和API,可以模拟用户在浏览器中的行为,并执行各种任务,如点击、输入文本、提交表单等。 要使用Python Selenium登录1688网站,需要进行以下步骤&…

iOS微信小程序虚拟支付解决方案

众所周知,在IOS微信小程序不支持虚拟支付,一直是困扰IOS开发者、运营最头疼的问题,主要原因是苹果不允许IOS微信上架这类产品。导致微信小程序的开发者在IOS上都不能支付虚拟商品,虚拟商品包含了虚拟课程、会员、虚拟书等。 那么…

短视频ai剪辑分发矩阵系统源码3年技术团队开发搭建打磨

如果您需要搭建这样的系统,建议您寻求专业的技术支持,以确保系统的稳定性和安全性。 在搭建短视频AI剪辑分发矩阵系统时,您需要考虑以下几个方面: 1. 技术实现:您需要选择适合您的需求和预算的技术栈,例如使…

肖sir__ 项目讲解__项目数据

项目时间: 情况一:项目时间开始到上线的时间,这个时间一般比较长(一年,二年,三年) 情况二:项目的版本的时间或则是周期(1个月,2个月,3个月&…

机器人、智能小车常用的TT电机/310电机/370电机选型对比

在制作智能小车或小型玩具时,在电机选型上一些到各种模糊混淆的概念,以及各种错综复杂的电机参数,本文综合对比几种常用电机的参数及特性适应范围,以便快速选型,注意不同生产厂家的电机参数规则会有较大差异。 普通TT…

论文阅读:PointCLIP: Point Cloud Understanding by CLIP

CVPR2022 链接:https://arxiv.org/pdf/2112.02413.pdf 0、Abstract 最近,通过对比视觉语言预训练(CLIP)的零镜头学习和少镜头学习在2D视觉识别方面表现出了鼓舞人心的表现,即学习在开放词汇设置下将图像与相应的文本匹配。然而,…

【ET8】2.ET8入门-ET框架解析

菜单栏相关:ENABLE_DLL选项 ET->ChangeDefine->ADD_ENABLE_DLL/REMOVE_ENABLE_DLL 一般在开发阶段使用Editor时需要关闭ENABLE_DLL选项。该选项关闭时,修改脚本之后,会直接重新编译所有的代码,Editor在运行时会直接使用最…

免费网页抓取工具大全【附下载和工具使用教程】

在当今信息爆炸的时代,获取准确而丰富的数据对于企业决策和个人研究至关重要。而网页抓取工具作为一种高效获取互联网数据的方式,正逐渐成为大家解决数据需求的得力助手。本文将深入探讨网页抓取工具的种类,并为大家提供简单实用的页面采集教…

(企业项目)SpringBoot3整合校验框架validation

在Spring Boot项目中使用校验框架validation可以让我们更方便地实现数据校验和错误提示。下面是Spring Boot集成校验框架validation的步骤。 添加依赖 在项目的pom.xml文件中添加validation依赖&#xff1a; <dependency><groupId>org.springframework.boot</…

C# 实现Lru缓存

C# 实现Lru缓存 LRU 算法全称是最近最少使用算法&#xff08;Least Recently Use&#xff09;&#xff0c;是一种简单的缓存策略。 通常用在对象池等需要频繁获取但是又需要释放不用的地方。 代码实现的基本原理就是使用链表&#xff0c;当某个元素被访问时&#xff08;Get或…

windows安装protoc、protoc-gen-go、protoc-gen-go-grpc

文章目录 一、 protoc二、protoc-gen-go三、protoc-gen-go-grpc 一、 protoc 1&#xff0c;下载&#xff1a;https://github.com/google/protobuf/releases 下载对应的protoc&#xff0c;注意选择windows 2&#xff0c;下好之后解压就行&#xff0c;然后把bin目录加入到环境…

【异常】浅析异常体系及为什么一定会执行finally块代码

异常体系&#xff1a; &#xff08;1&#xff09;所有异常&#xff08;Exception&#xff09;、错误&#xff08;Error&#xff09;都继承自异常中的基类&#xff1a;Throwable。而异常又可以分为检查异常&#xff08;Checked Exception&#xff09;、非检查异常&#xff08;Un…

msvcp100.dll丢失的常见原因/msvcp100.dll丢失的解决方法分享

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp100.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时&#xff0c;给使用者带来了很大的困扰。那么&#xff0c;究竟是什么原因导致了msvcp100.dll文件的丢失呢&#xff1f;本…

ubuntu22.04在opencv4的基础上安装opencv3

安装opencv4 首先在ubuntu22.04上安装opencv4&#xff0c;可以参考之前的博客ubuntu22.04安装opencv4和opencv_contrib-CSDN博客 安装opencv3 由于有使用opencv3的需求&#xff0c;所以需要继续安装opencv3 ; 安装编译 这里安装的版本是opencv3.4.5&#xff0c;大致安装思…

STM32F1之CAN介绍

目录 ​编辑 1. CAN 是什么&#xff1f; 2. 总线拓扑图 3. CAN 的特点 4. CAN 协议的基本概念 1. CAN 是什么&#xff1f; CAN 是 Controller Area Network 的缩写&#xff08;以下称为 CAN&#xff09;&#xff0c;是 ISO*1 国际标准化的串行通信协议。 在当前的汽车产…

javaWebssh学生系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh学生管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…

前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别

在 Web浏览器中存储数据以改善用户体验和提升Web应用程序性能是非常常见的。在大多数情况下&#xff0c;可供我们使用就是LocalStorage和SessionStorage。 本文中&#xff0c;我们将会从安全性和用户体验两个方面对SessionStorage和LocalStorage进行评估。然后我们将讨论如何根…

Linux驱动安装遇到的问题(Kernel configuration is invalid)(Invalid module format)

Linux驱动编译安装遇到的问题&#xff08;Kernel configuration is invalid&#xff09;&#xff08;Invalid module format&#xff09; 前言1. Kernel configuration is invalid2. Invalid module format2.1 第一种情况&#xff1a;内核模块编译的环境与现在insmod想要运行的…

python:mplfinance 画K线图+布林线

pip install mplfinance ; python 安装使用 TA-lib 安装主要在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 这个网站找到 TA_Lib-0.4.24-cp310-cp310-win_amd64.whl pip install /pypi/TA_Lib-0.4.24-cp310-cp310-win_amd64.whl 编写 mpf_kline_boll.py 如下 # -*- cod…