【Serverless】云函数微信小程序
简介
什么是AppGallery Connect云函数
云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开发与运维相关事务,降低应用功能的实现门槛,快速构建业务能力。
云函数提供了高效可靠的函数开发与运行框架,替开发者完全解决传统应用开发与运维中的诸多复杂事务(如服务器配置与管理、代码部署、负载均衡、弹性伸缩、高可用保证等),开发者只须聚焦业务逻辑、开发并上传函数代码,即可构建高可用、可伸缩的Serverless应用。
云函数作为Serverless的核心与枢纽,支持连接和扩展周边云服务能力,开发者可以像拼搭积木一样自由便捷地组织各项服务来实现业务逻辑
您将建立什么?
在本次案例中,您将实现一个能够使用AppGallery Connect云函数与客户端进行交互的功能,您需要完成的功能将包含:
在AGC网站上添加实现生肖计算的函数。
在AGC网站上测试新增的函数。
客户端调用新增函数,输入年份并成功得到返回。
你将会学到什么:
如何将方法函数添加为AppGallery Connect的云函数。
如何测试添加的云函数。
如何集成AppGallery Connect云函数的SDK并在本地调用云函数。
您需要什么?
开发环境及技能要求
您需要搭一套完整的微信开发工具开发环境
熟悉JavaScript
参考账号注册认证注册成为开发者
能力接入准备
集成AppGallery Connect云函数,需要完成以下准备工作
1.创建微信小程序工程
2.创建AppGallery Connect应用
在华为AppGallery Connect控制台创建应用。开发者可以先创建一个项目,然后在项目中添加应用。创建应用的过程中开发者需要填写对应应用的名称、包名、分类、语言等信息,创建完成后开发者可以获得应用的基本配置信息。
(1).登录AppGallery Connect网站,输入账号信息进入AppGallery Connect控制台。
(2).在AppGallery Connect控制台页面上,点击"我的项目",进入项目管理页面。

(3).在我的项目管理页面,点击添加项目按钮,输入项目名称,创建项目。

(4).在项目设置页面点击添加应用开始创建我的应用。

(5)在创建应用页面,填写应用名称,应用包名。平台,设备,应用分类(应用、游戏)和语言,请按实际情况选择。

(6).应用创建成功后,可在我的项目中查看应用包名和APP ID**ID等信息。

提示:需要通过注册成开发者才能完成集成准备中的操作,否则无法进行接入准备操作。
配置您的开发环境
- 登录AppGallery Connect网站,点击"我的项目"。
- 在项目列表中选择您需要开通云函数服务的项目。
- 在左侧导航栏选择"构建 > 云函数"。
- 点击页面右上角"立即开通"。
说明:
如果您此时未设置默认数据处理位置,系统会自动弹出提示框提示您设置默认数据处理位置,具体操作请参见设置默认

集成SDK
在微信小程序项目中,安装云函数JS SDK到项目中,安装完成后添加到package.Json
npm install --save @agconnect/function@1.3.1
配置云函数
创建云函数
1.开通云函数服务后,在云函数界面,点击"+创建云函数"。

2.在创建界面中,完成函数定义。
1)"函数名称"和"描述"栏输入函数名称与描述。
2)"代码输入类型"选择"在线编辑"。
3)"部署信息"中输入部署信息,可使用默认配置。

3.在handler.js文件的代码输入框中输入以下代码。
let myHandler = function(event, context, callback, logger)
{
var res = new context.HTTPResponse(context.env, {
"res-type":"context.env",
"faas-content-type":"json",
},"application/json", "200");
var year;
if (event.body) {
var _body = JSON.parse(event.body);
year = _body.year;
} else {
year = event.year;
}
var body = {
result:''
};
body.result = animal(year);
res.body = body;
context.callback(res);
function animal (inputYear) {
var resultString;
if (!isNumber(inputYear)) {
resultString = "input is not a number";
} else {
var remainder = inputYear % 12;
switch (remainder) {
case 0:
resultString = "Monkey";
break;
case 1:
resultString = "Chicken";
break;
case 2:
resultString = "Dog";
break;
case 3:
resultString = "Pig";
break;
case 4:
resultString = "Mouse";
break;
case 5:
resultString = "Cow";
break;
case 6:
resultString = "Tiger";
break;
case 7:
resultString = "Rabbit";
break;
case 8:
resultString = "Dragon";
break;
case 9:
resultString = "Snake";
break;
case 10:
resultString = "Horse";
break;
case 11:
resultString = "Sheep";
break;
default:
resultString = "No symbolic Animal";
}
}
return resultString;
}
function isNumber (input) {
if (parseInt(input).toString == "NaN") {
return false;
} else {
return true;
}
}
};
module.exports.myHandler =myHandler;


测试函数
1.您可以通过两种方式进入函数测试页面。
1)点击函数详情界面右上角的"测试"按钮。
2)在Cloud Functions主界面上左侧导航栏点击"函数",在函数页面点击"测试"页签。

2.选择刚刚创建的函数及其版本,在事件中输入如下代码:
{
"year": 2020
}


3.在执行结果中查看结果,判断是否与如下结果一致:

添加触发器
1.在函数列表中点击函数名称进入函数详情页面。如果是函数别名,则进入函数别名配置页面。
2.点击"配置"页签下的"添加触发器",显示触发器创建界面。
3.在"配置触发器"区域配置"触发器类型"等信息,此处以HTTP触发器类型和POST请求方式为例。


4.完成后点击"添加"并点击"保存"。
5.将"详细信息"中的"触发URL"的后缀保存,作为后续客户端请求时的触发器标识。

界面设置
您可以按照以下UI进行设计:

代码如下:
index.wxml:
<view class="container">
<view>
<form catchsubmit="formSubmit" catchreset="formReset">
<text>AGC-function-Demo</text>
<text>\n</text>
<text>\n</text>
<view class="weui-cell__bd" style="margin: 30rpx 0">
<input class="weui-input" name="httpTrigger" placeholder="input your HttpTrigger" />
</view>
<view class="weui-cell__bd" style="margin: 30rpx 0">
<input class="weui-input" name="body" placeholder="input your Body" />
</view>
<text>\n</text>
<view class="btn-area">
<button style="margin: 30rpx 0" type="primary" formType="submit" data-type="run">run</button>
</view>
</form>
</view>
<view class="text-box">
<text class="text-content">{{functionRes}}</text>
</view>
</view>


index.wxss:
/**index.wxss**/
.container {
padding: 0 0;
}
.userinfo {
color: #aaa;
}
.userinfo-avatar {
overflow: hidden;
width: 128rpx;
height: 128rpx;
margin: 20rpx;
border-radius: 50%;
}
.section_switch {
display: flex;
align-items: center;
justify-content: space-around;
}
.text-box {
margin: 20rpx;
}
.text-content {
word-break: break-all;
}


云函数开发
云函数最主要的功能就是在端侧触发云测的函数,首先调用wrap接口通过触发器标识指定需要触发的函数,然后调用call接口将函数的入参传入并触发函数。
formSubmit: function (e) {
console.log(e);
var _a = e.detail.value, httpTrigger = _a.httpTrigger, body = _a.body;
switch (e.detail.target.dataset.type) {
case 'run':
this.run(httpTrigger, body);
break;
default:
break;
}
},
run: function (httpTrigger, body) {
var _this = this;
var functionCallable = agconnect.function().wrap(httpTrigger);
functionCallable.call(body).then(function (res) {
_this.setData({
functionRes: JSON.stringify(res.getValue())
});
});
}


在初始化时输入刚刚复制的应用配置信息
var agConnectConfig = {
//应用配置信息
}
//初始化agc
agconnect.instance().configInstance(agConnectConfig);


打包测试
1.打开微信开发者工具,选择编译。
2. 打开页面后再HttpTrigger中填写之前在创建触发器时获取的触发器标识,再Function Body中添加触发的入参。

3.点击run后查看result。
打印结果显示2022是虎年,说明测试成功

恭喜您
祝贺您,您已经成功地构建了您的第一个应用程序,并学到了:
- 如何将方法函数添加为AppGallery Connect的云函数。
- 如何测试添加的云函数。
- 如何集成AppGallery Connect云函数的SDK并在本地调用云函数。
参考文件
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
【Serverless】云函数微信小程序的更多相关文章
- 腾讯云开发微信小程序使用体验
主体内容 代码构成 数据:JSON 配置文件 结构:WXML 模版文件 样式:WXSS 页面样式 交互:JS 脚本逻辑文件 云开发 云数据库 云函数 云存储 WXML 是小程序框架设计的一套标签语言, ...
- 腾讯云&搭建微信小程序服务
准备域名和证书 任务时间:20min ~ 40min 小程序后台服务需要通过 HTTPS 访问,在实验开始之前,我们要准备域名和 SSL 证书. 域名注册 如果您还没有域名,可以在腾讯云上选购,过程可 ...
- nodejs + 小程序云函数 生成小程序码
前言:这个东西坑死我了 业务需求要生成小程序码 然后我找了两天的资料 运行 生成一堆的乱码 死活就是不能生成 最后看了一遍博客 套用了一下 自己又简单的改了一下 nodejs 我是刚刚接触 有很多 ...
- 个微信小程序云开发云函数
1. project.config.json写上云函数所在目录"cloudfunctionRoot": "cloudfunctions/",如图 2. app. ...
- 微信小程序云开发之云函数创建
云函数 云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写.一键上传部署即可运行后端代码. 小程序内提供了专门用于云函数调用的 API.开发者可以在云函数内使用 wx-server-sdk ...
- 微信小程序云开发
什么是云开发? 云开发是由腾讯云联合微信团队为开发者提供的 包含 云函数.云数据库和云文件存储能力的后端云服务 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 A ...
- 微信小程序开发(二)----- 云开发
1.概念 微信小程序的云开发是腾讯云与微信团队深度合作推出的一个全新的小程序的解决方案,它提供了云函数.云数据库与云存储这三大基础能力支持,随着云开发的出现,小程序的开发者可以将服务端的部署和运营的环 ...
- 微信小程序与云开发
微信小程序基础概念 小程序云开发的三大基础能力:云数据库.云函数.云存储 Java.NodeJS.JavaScript.HTML5.CSS3.VueJs.ReactJs.前端工程化.前端架构 小程序开 ...
- 微信小程序入门笔记-使用云开发(4)
1.云数据库 一.介绍 云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象.一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数 ...
随机推荐
- React报错之Encountered two children with the same key
正文从这开始~ 总览 当我们从map()方法返回的两个或两个以上的元素具有相同的key属性时,会产生"Encountered two children with the same key&q ...
- luogu1419 寻找段落 (二分,单调队列)
单调队列存坐标 #include <iostream> #include <cstdio> #include <cstring> #include <algo ...
- Git 10 IDEA撤销推送
参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 如果推送了多 ...
- .NET性能优化-快速遍历List集合
简介 System.Collections.Generic.List<T>是.NET中的泛型集合类,可以存储任何类型的数据,因为它的便利和丰富的API,在我们平时会广泛的使用到它,可以说是 ...
- Canvas 线性图形(二):圆形
函数 arc(x, y, radius, startAngle, endAngle, counterclockwise) 参数名 描述 x.y 圆心坐标轴 radius 圆的半径 startAngle ...
- Canvas 线性图形(一):路径
路径的概念 路径是从起始点到结束点之间的连线.个人认为,二维画布中分为线性图形和非线性图形,线性图形包括矩形.直线.曲线.圆形等各种几何图形:非线性图形包括图象.文本.像素.线性图形中又分为路径和非路 ...
- React报错之Parameter 'props' implicitly has an 'any' type
正文从这开始~ 总览 当我们没有为函数组件或者类组件的props声明类型,或忘记为React安装类型声明文件时,会产生"Parameter 'props' implicitly has an ...
- 【MySQL】从入门到精通7-设计多对多数据库
上期:[MySQL]从入门到精通6-MySQL数据类型与官方文档 第一章:理解 和一对多不一样,多对多意思是,一个数据可以被不同的数据关联. 如果是一对多,我们还可以用外键来达成. 但是现在我们是多对 ...
- Netty使用手册翻译
前言 痛点 时至今日,我们通常会使用应用程序或第三方库去提供通信功能.比如:我们通常使用HTTP客户端库去Web服务器检索信息;通过web服务调用一个远程程序.然而,一个通用协议或者它的实现往往不能适 ...
- 华南理工大学 Python第2章课后小测-1
1.(单选)"abc"的长度是3,"老师好"的长度是多少?(本题分数:4)A) 1B) 3C) 6D) 9您的答案:B 正确率:100%2.(单选)下面代码的 ...