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

写在前面

最近在做微信小程序的开发工作,遇到了一个需求是由于小程序的每个包有大小限制,在某一些需要使用插件的情况下,使得包的体积超出限制,因此考虑一种将运算逻辑放在云端的方式来优化包体积大小。

云函数使用

准备工作

根据微信开发者工具,新建云开发项目,工具会自动构建一个可以使用云开发的项目。

1、清除附加文件,项目结构如下:

2、确认project.config.json文件配置了cloudfunctionRoot字段,该字段指定本地已存在的目录作为云函数的本地根目录。
3、打开工具栏云开发,点击设置,配置云开发环境


4、云函数根目录指定云环境(右键根目录cloudfunctions),第一个选项配置当前采用的云环境

-----现在可以创建云函数,进行开发了--------

使用方式

1、在云函数目录下新建nodejs云函数,因为云开发主要采用的是Node.js完成的,可以在云函数列表中查看每个函数的运行环境(Nodejs X.X)

2、在云函数的主入口文件中对传入的参数、调用信息和运行状态进行运算等,并将结果返回出来

3、一般情况下,大家举的例子都是加法的操作,但是实际情况需要进行的运算逻辑会比较复杂、多样。因此采用了类的形式将方法运算得到的结果通过主函数返回。如图:
// 云函数入口文件
const cloud = require("wx-server-sdk");cloud.init();// 云函数入口函数
exports.main = async (event, context) => {let num1 = event.num1;let num2 = event.num2;let calculate = new Calculate();return {add: calculate.add(num1, num2),minus: calculate.minus(num1, num2),};
};class Calculate {constructor() {}add(num1, num2) {return num1 + num2;}minus(num1, num2) {return num1 - num2;}divide(num1, num2) {return num1 / num2;}multi(num1, num2) {return num1 * num2;}
}

上述代码将类中的方法作为结果返回。

4、调用云函数
getCloudRes(){wx.cloud.init();try {wx.cloud.callFunction({name: 'Calculate',data: {num1: this.data.num1,num2: this.data.num2,},}).then((res)=>{console.log(res)});} catch (e) {console.error('result', result);}}

云函数是异步返回的,因此也可以通过asyncawait调用

async getCloudRes(){try {let res = await wx.cloud.callFunction({name: 'Calculate',data: {num1: this.data.num1,num2: this.data.num2,},});console.log('res',res)} catch (e) {console.error('result', result);}}
5、云函数编写和调用部分代码完成后,需要调试云函数是否能运行成功。

方法有两种:一种是将云函数上传到云端,然后调用;另一种是云函数的本地调试(推荐,可以根据本地调试的面板设置断点等,获取每一个的运行情况)

5.1 安装本地调试依赖

1、要进行本地调试需要安装云环境依赖,运行命令npm install,安装后会多出node_modules文件夹,放有依赖文件

5.2 开启云函数本地调试,查看调试结果


云函数本地调试和一般的本地调试类型,都可以查看source设置断点,当得到调试结果正确后便可上传到云端。

6、将云函数上传到云端

在云函数目录右键创建并部署,需要注意如果在本地修改了云函数,需要重新手动更新,否则无法同步到云端。上传到云端的函数可以在云函数列表中查看,如图:

后续还会继续说一下云函数调用,云函数之间调用的注意事项。

----TBC----

微信小程序云开发之云函数使用相关推荐

  1. 【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)

    开始前,请先完成圆梦宝典中滚动公告栏的开发,详见 [微信小程序-原生开发]实用教程 08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据 ...

  2. 微信小程序——传统开发模式与云开发模式对比

    目  录 1.传统开发模式与云开发模式的对比图 2.云开发技术能力说明 3.云开发技术特点 1.传统开发模式与云开发模式的对比图 通过传统开发模式与云开发模式的对比图可以看出传统开发模式需要开发者关注 ...

  3. 微信小程序图片无法存入云开发数据库,求解决

    微信小程序图片无法存入云开发数据库,求解决 上传图片的js代码片段 上传图片的js代码片段 上传图片的js代码片段,觉得自己代码的没错,也能打印出来上传的图片地址,但是发现并没有存进数据库,求大神指点 ...

  4. 微信小程序:全新独家云开发微群人脉

    今天给大家带来一款云开发版本的微群人脉小程序源码 该版本属于采集版本(群二维码自动采集) 该版本属于云开发版本(免服务器和域名) 这是一款不怕封小程序版本 PS:支持用户自主发布那一款还是有点危险因为 ...

  5. 【微信小程序-原生开发】实用教程08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据,滚动公告栏

    开始前,请先完成圆梦宝典中宫格导航的开发,详见 [微信小程序-原生开发]实用教程 07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字) https://blog.csdn.net ...

  6. 微信小程序接入腾讯云IM即时通讯(获取聊天历史记录开发步骤)

    微信小程序接入腾讯云IM即时通讯(获取聊天历史记录开发步骤) 1.先看文档: 获取 C2C 历史消息 :https://cloud.tencent.com/document/product/269/1 ...

  7. 微信小程序开通腾讯云开发环境

    目录 微信小程序开通"腾讯云"开发环境 注册腾讯云账号 配置开发环境 微信小程序开通"腾讯云"开发环境 这里强调以下,标题是"腾讯云"开发环 ...

  8. 微信小程序应用开发赛作品综合开发记录——晋鹿文旅(云开发——概览)

    文章目录 前言 作品展示: 1.设计理念: 2.1.风景/人文历史 2.2.文物园 2.3.志愿者(暂未对接任何活动,仅测试) 2.4.英汉传译(考虑到可能在旅行中外国友人或者单纯就想翻译) 2.5. ...

  9. 微信小程序集成腾讯云 IM SDK

    1.背景 因业务功能需求需要接入IM(即时聊天)功能,一开始想到的是使用 WebSocket 来实现这个功能,然天意捉弄(哈哈)服务器版本太低不支持 wx 协议(也就不支持 WebSocket了)不得 ...

  10. 微信小程序利用腾讯云IM发送语音 + 图片

    微信小程序利用腾讯云IM发送语音 + 图片 能做到这里 说明你已经可以发送普通文本了 如果没有的话可以看一下我的上一篇文章 有完整的讲解 效果图 语音聊天 发送图片 传送 → 发送图片 发送语音 ** ...

最新文章

  1. 字符串匹配shiftand算法
  2. git branch 为什么会进入编辑状态_gitamp;github(总结git与github的基本用法)
  3. 基于OpenCV的气体泵扫描仪数字识别系统
  4. 工作流引擎 SpringBoot+flowable完美结合,快速实现工作流,so easy
  5. GLUT库与GLAUX库
  6. IOS开发入门环境搭建输出helloworld
  7. IOS中四种json解析效率比较
  8. AS3工程中的Loading的应用
  9. Android 用MediaRecorder录制视频太短崩的问题
  10. JAVA如何取得空list成员类型_String 类型的List作为一个成员变量保存,保存成功后取对象时报空指针...
  11. C++ STL简介(转)
  12. 排序算法 —— 堆排序
  13. js正则函数match、exec、test、search、replace、split使用集合
  14. 在伦敦逛菜市场_我在伦敦进行岗后求职的经验教训
  15. 安全客2017季刊-第3期
  16. 【优化算法】蜜獾优化算法(HBA)【含Matlab源码 1437期】
  17. 进销存系统收费标准是怎样的?
  18. 阅读《Keyword-Guided Neural Conversational Model》
  19. 五、神奇的自然常数e之“自然”魅力
  20. 凡泰极客成为W3C成员并加入MiniApps工作组

热门文章

  1. table 中的col和colgroup
  2. 超实时性单目标跟踪网络——Siamese RPN(CVPR2018 spotlight论文)
  3. 【English】十一月英语总结
  4. linux开放端口命令
  5. chrome浏览器字体小于12px的解决方式
  6. 设计模式(一):Android 源码中的单例模式
  7. 关键词排名查询工具主要有哪些?
  8. pandas中DataFrame字符串过滤之正则表达式
  9. UR5 Gazebo仿真配置(不使用MoveIt)
  10. arcgis画线根据长度_如何使用Arcgis进行画线与面并计算大小?