HarmonyOS鸿蒙Next新手也能搞定的端云一体化指南——云函数

HarmonyOS鸿蒙Next新手也能搞定的端云一体化指南——云函数

一些理论知识要点

云函数是一项Serverless计算服务,提供Faas(Function as a Service)能力,一方面云函数将开发测试的对象聚焦到函数级别,可以帮助开发者大幅简化应用开发与运维相关的事务,另一方面开发者可以通过在应用中集成云函数SDK,便捷操作云开发(Serverless)提供的其他诸如云数据库、云存储等服务,提升业务功能构建的便利性。解决了传统业务开发、调试、部署、运维疑难杂症,开发者不需要关注业务逻辑以外的事务,如搭建软件运行环境、高并发扩容、服务器维护等,云函数可以根据函数的实际流量对函数进行弹性伸缩,开发者无需为空闲资源买单。

开发一个获取「欢迎页面信息」的云函数

开发流程

使用端云一体化云侧工程开发云函数流程为以下五步:

  1. 确保云函数服务开通。
  2. 通过DevEco Studio工具在云侧工程创建一个用于获取「欢迎页面信息」的云函数,并为函数配置入口以及调用的触发器等。
  3. 通过DevEco Studio工具在云侧工程为创建的云函数编写业务逻辑代码。
  4. 通过DevEco Studio工具测试函数代码是否正常。
  5. 完成函数代码开发与调试后,通过DevEco Studio工具提供的一键部署能力,将云函数部署到AGC云端。

确保云函数服务开通

使用DevEco Studio预置的通用云开发模板创建的端云一体化工程,在工程初始化时,会自动开通云开发(Serverless)服务,若在开发工具主界面通知栏(Notifications)中显示服务开通失败,需按照以下步骤进行开通个。

  1. 登录 AGC控制台,点击“我的项目”。
  2. 在项目列表中点击需要开通云函数的项目。
  3. 在打开的目标项目左侧导航栏选择“云开发(Serverless) > 云函数”,进入云函数页面,点击“立即开通”。如果您此时未设置数据处理位置,系统会自动弹出提示框提示您进行设置。

云侧创建云函数

  1. 展开云侧工程目录,右击“cloudfunctions”目录,选择“New > Cloud Function”。
  2. 在打开的“New Cloud Function”窗口,输入云函数名称(如“query-welcome-func”),函数命名需符合长度2-63个字符,仅支持小写英文字母、数字、中划线,首字符必须为小写字母,结尾不能为中划线的命名规则。接着在“Select the Cloud Function Type”栏中选择“Cloud Function”,点击OK完成云函数创建。

DevEco Studio会根据通用云开发模板中云函数模板完成函数创建,在开发工具底部右侧弹出云函数创建成功信息,同时会在“cloudfunctions”目录下生成新建的“query-welcome-func”函数目录,目录包括以下文件:

  • 函数配置文件“function-config.json”
  • 函数入口文件“queryWelcomeFunc.ts”
  • 依赖配置文件“package.json”

函数创建完成后,会自动在开发工具主界面编辑区打开函数入口文件“queryWelcomeFunc.ts”。

配置函数

打开函数配置文件“function-config.json”,文件包含函数入口属性、函数类型属性、以及触发器配置属性。

函数类型“functionType”值为0时表示云函数,为1时表示云对象,该值为创建时自动生成,且不可手动修改,负责将导致云函数部署失败。

云函数当前仅支持HTTP触发器,“function-config.json”文件中已经为开发者自动完成HTTP触发器配置。云函数部署到AGC云端后会自动生成触发URL,在开发者向该URL发起HTTP请求时触发函数。

开发函数

函数配置完成后,该函数的作用是获取云数据库中「欢迎页信息」,需要为函数配置云数据库SDK依赖关系,在“package.json”文件的“dependencies”下添加需要的依赖,当然,这种方式需要开发者明确依赖包的版本,然后点击右上角“Sync now”同步配置。若开发者不清楚依赖包的版本,在函数根目录打开终端,使用npm install --save @hw-agconnect/cloud-server命令安装依赖包。

导入对象类型文件

  1. 右击需要调用的对象类型文件(以“Welcome.json”为例),选择“Generate Server Model”。
  2. 选择生成的Server Model文件存放在“query-welcome-func”函数目录,点击OK。
  3. “query-welcome-func”目录下生成对应对象类型的Server Model文件,为开发者在后续逻辑代码中引用Server Model提供便利。

开发获取「欢迎页信息」代码

在“query-welcome-func”目录下新建CloudDBZoneWrapper.ts文件,引入云数据库SDK包和对象类型文件,并定义获取Welcome数据的存储区名称(若不清楚存储区名称,可以在“clouddb > dataentry”目录下目标对象类型数据条目中查看),然后提供一个查询「欢迎页信息」的接口。

// 引入Server SDK依赖
import { cloud, CloudDBCollection } from '@hw-agconnect/cloud-server';
// Welcome为对象类型名
import { Welcome } from './Welcome';

// ZONE_NAME为存储区名称
const ZONE_NAME = "default";

export class CloudDbZoneWrapper {
  collection: CloudDBCollection<Welcome>;

  constructor() {
    this.collection = cloud.database({ zoneName: ZONE_NAME }).collection(Welcome);
  }

  //查询数据
  async queryBooks(): Promise<Welcome[]> {
    const query = this.collection.query();
    const result = await query.equalTo("status", 0).get();
    return result;
  }
}

在函数入口文件“queryWelcomeFunc.ts”文件中添加业务逻辑代码。

import { CloudDbZoneWrapper } from './CloudDBZoneWrapper';
let myHandler = async function (event, context, callback, logger) {
  logger.info(event);

  const wrapper = new CloudDbZoneWrapper();
  const result = await wrapper.queryBooks();
  return callback({
    code: 0,
    desc: "Success.",
    data: result
  });
};

export { myHandler };

调试云函数

云函数开发完成后,可以通过本地调用方式调试函数,也可以将函数部署至AGC云端后通过远程调用方式调试函数,推荐使用本地调试方式调试函数,函数正确运行后再部署至AGC云端。

  1. 右击“cloudfunctions”目录中的目标函数query-welcome-func目录,选择“Debug Cloud Functions”启动云函数。
  2. 在开发工具主界面底部控制台“cloudfunctions”窗口,可以查看云函数启动日志,调试日志。如果出现“Cloud Functions loaded successfully”,表示函数成功加载到本地运行的HTTP Server中,并生成对应的Function URI。
  3. (可选)开发者如果需要设置断点调试,在函数代码中选定要设置断点的有效代码行,在行号后单击鼠标左键设置断点。设置断点后,调试能够在断点处中断,并高亮显示该行。
  4. DevEco Studio集成开发工具内置了调试工具,在开发工具主界面顶部菜单栏选择“View > Tool Windows > Cloud Functions Requestor”,打开事件模拟器(Cloud Function Requestor)来触发函数调用。

在弹出的事件模拟器(Cloud Functions Requestor)面板,配置触发事件参数,然后点击面板中触发(Trigger)触发云函数执行业务逻辑。执行结果将展示在“Result”框内,“cloudfunctions”窗口同时打印调试日志。

部署云函数

开发、调试云函数通过后,开发者可以将云函数部署到AGC云端,支持单个部署和批量部署。二者区别在于所选目录不同,单个部署仅部署选中的目标函数,批量部署则会将整个“cloudfunctions”目录下的所有函数同时部署到AGC云端。

  1. 右击目标云函数目录(query-welcome-func),选择“Deploy ‘函数名称’”。
  2. 可在开发工具主界面底部状态栏右侧查看函数打包与部署进度,直至出现“Deploy successfully”消息,表示云函数已成功部署到AGC云端。

总结

本小节主要对云函数相关概念做了简单了解,并通过查询「欢迎页信息」对象类型详细信息讲解了使用一站式集成工具DevEco Studio工具开发、调试、部署云函数至AGC云端,同时提供了如何查看部署到AGC云端的云函数资源。

2 回复

HarmonyOS鸿蒙Next的端云一体化开发中,云函数是实现云端逻辑的关键组件。云函数允许开发者在云端运行代码,无需管理服务器,直接与设备端进行交互。以下是云函数的基本使用步骤:

  1. 创建云函数:在华为开发者联盟的AppGallery Connect中,进入“云函数”模块,点击“创建函数”,填写函数名称、运行时环境(如Node.js)等基本信息。

  2. 编写函数代码:在云函数的代码编辑器中,编写业务逻辑代码。例如,处理设备端上传的数据,或调用其他云服务。代码编写完成后,点击“保存”。

  3. 配置触发器:云函数可以通过触发器自动执行。常见的触发器包括HTTP请求、定时任务、设备端事件等。在“触发器”模块中,配置触发条件,如URL路径、定时规则等。

  4. 部署与测试:完成代码编写和触发器配置后,点击“部署”按钮,将云函数发布到云端。部署成功后,可以通过触发器或直接调用函数URL进行测试。

  5. 设备端调用:在HarmonyOS设备端,使用@ohos.cloud模块调用云函数。通过cloud.callFunction方法,传入函数名称和参数,即可触发云函数执行,并获取返回结果。

  6. 监控与日志:在AppGallery Connect中,可以查看云函数的执行日志和监控数据,帮助开发者调试和优化代码。

通过以上步骤,开发者可以快速实现HarmonyOS鸿蒙Next的端云一体化功能,利用云函数处理复杂的业务逻辑,提升应用性能和用户体验。

更多关于HarmonyOS鸿蒙Next新手也能搞定的端云一体化指南——云函数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,端云一体化通过云函数实现,新手也能轻松上手。首先,在DevEco Studio中创建云函数项目,选择“Cloud Function”模板。接着,编写云函数代码,支持JavaScript和TypeScript。然后,配置云函数触发器,如HTTP请求或定时任务。最后,部署云函数到华为云FunctionGraph服务,通过API Gateway暴露接口。这样,设备端即可调用云函数,实现端云协同。整个过程简单直观,适合初学者快速掌握。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!