我们前面已经学习了鸿蒙应用的开发。也学习了请求后台数据。但是传统后台开发需要我们等待后端程序员写好后台后,我们才可以调用后台数据。但是我们如果想自己摆脱后台,自己开发鸿蒙的数据后台该怎么办呢。接下来就来教大家如果自己开发鸿蒙应用的前端和后台,做一个全栈开发工程师。
一,端云一体化全栈开发
端云一体化开发支持您同时完成鸿蒙前端应用与云侧开发,体验端云一体化协同开发。就是前端后端的开发你一个人就可以全部完成。
1-1,什么是端云一体化开发
为丰富HarmonyOS对云端开发的支持、实现端云联动,鸿蒙在传统的“端开发”基础上新增“云开发”能力,开发者在创建工程时选择合适的云开发工程模板,即可在DevEco Studio内同时完成HarmonyOS应用端侧与云侧开发,体验端云一体化协同开发。
1-2,端云一体化开发特性
端云一体化开发特性主要包含了如下功能。
主要功能 | 说明 |
---|---|
端云一体化开发 | 您不仅可以在DevEco Studio中开发应用端侧的业务代码,还可以开发和调试应用云侧的服务代码、并在开发完成后将云侧工程一键部署至AGC 云端。 |
Cloud Foundation Kit | 云侧工程接入Cloud Foundation Kit,按需为应用提供云函数、云数据库、云存储等云端服务,借助Cloud Foundation Kit开箱即用、一键部署、自动弹性伸缩、免运维等特点助力开发者降本增效。 |
1-3,端云一体化开发的优势
相比于传统开发模式,端云一体化开发模式具备成本低、效率高、门槛低等优势,具体区别见下表。
区别点 | 传统开发模式 | 端云一体化开发模式 |
---|---|---|
开发语言 | Java,php,python,node | Ts和ArkTs几乎一样 |
开发工具 | 端侧与云侧各需一套开发工具,云侧需自建服务器,工具成本高。 | DevEco Studio一套开发工具即可支撑端侧与云侧同时开发,无需搭建服务器,工具成本低。 |
开发周期 | 1-5月 | 1-5周 |
学习难易 | 容易上手 | 学习起来比较久 |
开发人员 | 端侧与云侧要求不同的开发语言,技能要求高。需多人投入,且开发人员之间需持续、准确沟通,人力与沟通成本高、效率低。 | 依托Cloud Foundation Kit开放的接口,端侧开发人员也能轻松开发云侧代码,大大降低开发门槛。开发人员数量少,降低人力成本,提高沟通效率。 |
运维 | 需自行构建运营与运维能力,成本高、负担重。 | 直接接入Cloud Foundation Kit,具有开箱即用、一键部署、自动弹性伸缩、免运维等特点,开发者可聚焦业务逻辑本身,实现降本增效。 |
费用 | 免费版基本上够用 | 200-2000每年 |
1-4,AppGallery Connect(简称AGC)
我们实现鸿蒙端云一体化全栈开发,其实是借助鸿蒙提供的
AppGallery Connect(简称AGC)
AGC致力于为应用的创意、开发、分发、运营、经营各环节提供一站式服务
,构建全场景智慧化的应用生态体验。AppGallery Connect深度整合华为内部各项优质服务,将华为在全球化、质量、安全、工程管理等领域长期积累的能力开放给开发者,大幅降低应用开发与运维难度,提高版本质量,开放分发和运营服务,帮助您获得用户并实现收入的规模增长。
通俗的讲就是AGC一个人把前端,后端,运维,运营人员的活都干了。也就是你一个人既是全栈开发工程师,又可以做运维运营的活。你一个人可以干4个人的活。所以把端云一体化学好。你自己就可以扛起一个公司的业务了。
1-5,AGC的使用场景
AGC当前提供了四大场景的解决方案,您可以更灵活运用AGC的能力,助力您的商业成功。
-
一站式全球发布
支持全终端、全场景、跨平台的应用分发,助力开发者不断优化应用,提升用户体验,获取更多流量。
发布前:通过云测试、云调试服务可以测试应用性能;通过接入检测服务可以对应用包体进行全面检测,从而降低上架审核的驳回率;通过开放式测试可以体验应用在华为应用市场的上架下载流程。
发布:AGC支持发布安卓应用、快应用、App Bundle、HarmonyOS等多种类型的包
,助力开发者全场景设备的一键分发。发布范围覆盖200+国家与地区,支持78种语言。
发布后:依托华为分析服务强大的分析能力,您可以通过对各类分析报告进行分析,从而实现对应用的优化、精益运营。 -
用户精细化运营
提供多样化的用户经营能力,端到端支持开发者实现用户拉新、促活、转化、召回等,助力开发者实现用户增长,加速应用的商业成功。 -
应用高效开发
帮助开发者统一构建和管理后端服务和云资源
,提供包含计算、弹性伸缩、存储等Serverless
能力,降本增效,安全可靠。 -
质量无忧护航
实时监控应用的运行状态,助力开发者快速、准确定位应用的异常,从而为应用的性能稳定保驾护航。
1-6,云开发
我们目前使用最多的就是AGC的Serverless能力
,学过石头哥微信小程序课程的同学肯定知道这个Serverless,其实就是我们所谓的云开发
,鸿蒙云开发和我们小程序云开发是一样的,都是为了帮助前端开发摆脱后台自己实现全栈开发的。技术都是一样的,原理也差不多,无非就是代码语法有些不同而已。
华为这里重新取了个名字,叫Cloud Foundation Kit
(云开发服务)
服务 | 说明 |
---|---|
云函数 | 事件驱动的函数计算平台,让您便捷运行代码而无需管理服务器,且平台保证函数的高可用与伸缩。 |
云数据库 | 可从端侧访问,端云数据自动同步,离线可用的端云数据库服务。其实就是我们前端直接操作云端数据库 |
云存储 | 可从端侧直接访问的云端存储,为您的应用提供安全可靠、低成本的海量对象存储功能。主要就是存储我们常用的文件,图片,音视频等 |
云托管 | 动静态网页内容的托管服务,支持一键式部署,安全快速地向用户提供网页访问。 |
所以我们接下来重点学习这几个。先给大家看下在开发者工具里创建的app端和云端项目结构
二,云开发的准备工作
既然我们端云一体化是借助AGC来实现的,那么我们首先要去鸿蒙的AppGallery Connect进行注册。
1-1,注册华为账号
首先就是注册华为开发者账号并实名认证,这里我就不再赘述。大家自行去华为开发者联盟
进行注册就行。
1-2,在AGC里创建项目
我们注册好以后,就可以进入AppGallery Connect创建项目了
进入AGC以后,点击我的项目
正常第一次进来需要新建一个项目的
项目名称自己随便取
分析服务不需要,关闭即可
创建好项目后需要添加应用
一个项目里可以开通多个应用。多个应用可以共用一个项目里的云开发能力(云函数,云数据库,云存储等),我们一开始学习,最好一个项目里先只创建一个应用。
1-3,在项目里添加应用
我们创建好项目,并点击了添加应用,记得选择App(HarmoneyOs)也就是我们的鸿蒙app,提示我们要先去创建AppID
创建appid需要注意的地方比较多,我会一个个给大家说下的。
首先是应用类型,要选择HarmoneyOs应用,还有应用分类也是选择应用。因为我们是开发应用,不是开发游戏。应用名称自己随便取。
需要重点注意的是应用包名
,应用包名就是我们应用在全世界的唯一标识,所以要认真看下面的规范取名,不能和别人一样。
HarmonyOS应用包名需遵守如下规范:
必须为以点号(.)分隔的字符串,且至少包含三段,每段中仅允许使用英文字母、数字、下划线(_),如“harmony_11.huawei.com ”。
首段以英文字母开头,非首段以数字或英文字母开头,每一段以数字或者英文字母结尾,如“harmony99.huawei.11_com”。
不允许多个点号(.)连续出现,如“harmony…huawei.com ”。
长度为7~128个字符。
也就是我们取名的时候必须严格按照规范取,比如我这里取名为
com.biancheng.xiaoshitou
跳出下图直接点确认即可,开放能力和构建都先不用管。
然后我们的应用就创建好了
再回到项目,就可以看到我们项目下面多了一个应用
1-4,启用项目的数据处理位置
我们进入到项目,需要把数据处理位置启用下,并且地址要选择中国。
我们在国内开发,只能选择中国
三,云函数
3-1,云函数简介
云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,一方面云函数将开发测试的对象聚焦到函数级别,可以帮助您大幅简化应用开发与运维相关的事务,另一方面您可以通过在应用中集成云函数SDK,便捷操作云数据库、云存储等,提升业务功能构建的便利性。云函数可以根据函数的实际流量对函数进行弹性伸缩,您无需对服务器资源进行管理,解决了开发者运维管理的难题。
使用云函数我们无需购买和管理服务器,您只要编写核心代码并上传,即可在平台上弹性、安全地运行移动后端代码,从而大幅提升应用开发、上线速度。
3-2,云函数功能介绍
- 极简开发,极速上线
无需特定框架,您只需聚焦业务逻辑,直接使用函数快速地独立开发与迭代各个业务模块。函数上传即可自动部署,大幅提升开发和上线的速度。 - 零运维
您只需负责代码开发与上传,云函数服务会自动为您的函数完成资源分配、代码部署、负载均衡、弹性伸缩等运维工作,并保证函数的高可用性。 - 联通周边服务
云数据库、云存储等服务的触发器可自动触发函数执行,而函数通过AGC Server SDK亦可便捷操作这些服务。
云函数作为Serverless的核心与枢纽,支持方便连接和扩展周边云服务能力,您可以像拼搭积木一样自由便捷地组织各项服务来实现业务逻辑。
- 简化开发与运维
云函数提供了高效可靠的函数开发与运行框架,替开发者完全解决传统应用开发与运维中的诸多复杂事务(如服务器配置与管理、代码部署、负载均衡、弹性伸缩、高可用保证等等),您只需聚焦业务逻辑、开发并上传函数代码,即可构建高可用、可伸缩的Serverless应用。
3-3,云函数的应用场景
-
便捷运行代码而无需管理服务器
您可以在线编辑函数代码或上传代码包、设置资源需求、配置环境变量、然后为函数绑定触发器。 接下来,云函数会为您全权管理函数的运行,由事件来驱动函数的自动执行,并自动完成资源分配、函数部署与启动、流量负载均衡等任务,保证函数的高可用性,免除您运维的后顾之忧。 -
应用流量暴增
免运维、按需弹性伸缩的特性,帮助您从容应对流量暴增场景,您只需聚焦业务代码开发即可。 比如,电商应用的服务器日访问流量在不同时期会伴有明显的波峰低谷。借助云函数,应用能够轻松应对突发海量访问。而在无流量时,函数实例数可缩至0,减少波谷时资源浪费。 -
与认证服务配合构建功能
和认证服务的触发器相配合,为多种场景快速构建业务功能。 比如,当用户在您开发的移动应用上完成注册,并通过认证服务完成用户身份认证后,可以触发云函数向用户发送面向新用户的欢迎信息。 -
与云存储配合构建功能
和云存储服务的触发器相配合,为多种场景快速构建业务功能。 比如,当用户上传图片到云存储的存储实例中时,可以触发配置的云函数来完成原始图片的下载,缩略图的生成与上传等动作。 -
与云数据库配合构建功能
和云数据库服务的触发器相配合,为多种场景快速构建业务功能。 在操作云数据库中的数据时,可以触发一个函数,获取数据表的变化内容,执行一定的业务逻辑处理。
3-4,工作原理
使用云函数服务,您需要先在AppGallery Connect(简称AGC)上开发能够实现某些业务功能的云函数,并为函数添加触发其运行的触发器,比如在发起HTTP请求时触发运行的HTTP触发器、集成云数据库服务后进行删除或者插入数据操作时触发运行的云数据库触发器等。客户端集成云函数SDK并满足函数触发器的触发条件后,便可以实现云函数的调用,极大地便利了业务功能的构建。
3-5,开通云函数
还是回到我们的AGC,然后点击云开发,找到云函数,点击开通。
点完立即开通,开通好如下
接下来我们就要在项目代码里编写和使用云函数了。
3-6,开发者工具里创建云开发项目
基于Cloud Foundation Kit(云开发服务)的端云一体化开发需要使用DevEco Studio NEXT Developer Beta1及以上版本,如果您尚未安装或者安装版本过低,请参考快速开始安装、下载、配置最新版本的DevEco Studio。也就是记得去下载最新版的DevEco Studio 开发者工具。
我们前面讲鸿蒙基础入门的时候有教大家如何去下载最新版的开发者工具。
我们安装好开发者工具,就可以去新建项目了。正常你第一次打开开发者工具,按照如下方式创建项目。
我对开发者工具做了汉化操作。如果你不知道怎么设置,就去看下我们鸿蒙入门视频或者博客。
如果你是第一次进入开发者工具,就点项目然后新建项目
如果之前进入过,就点击开发者工具左上角的文件,然后点新建,新建项目。
在创建项目的地方找到Cloud字样的,就是我们端云一体化的项目了。
然后就是设置项目信息
包名必须和我们前面注册应用时的包名一模一样。最好直接去AGC里复制过来。
然后就是代码目录
点击创建项目以后,会提示我们登录开发者账号
登录后就可以看到我们之前注册的应用了
然后可以看到云开发项目和鸿蒙app项目都自动的创建好了。
接下来我们学习云函数就是在CloudProgram里的cloudfunctions里编写。
3-7,创建云函数
我们创建好端云一体化的项目以后,就要来创建云函数了。创建的云函数都在CloudProgram里的cloudfunctions里。所以鼠标右键cloudfunctions
创建一个叫xiaoshitou的云函数
我们在ts文件里编写云函数,通过ts后缀我们知道编写云函数用的是typescript语言,其实我们前面学习鸿蒙前端的时候用的ArkTs也是ts语言的升级版。所以我们开发app端或者云开发后端,都是用的同样的语言。这就大大的降低了我们的开发难度。
3-8,云函数返回数据
我们云函数里的callback就是要返回给前端的数据。所以前端调用我们的云函数时,会把这里编写的信息返回给前端。
那么我们先稍微的改下返回数据
3-9,本地测试云函数
我们正常编写好云函数是要部署到云端的,但是开发好的云函数要先测试下。我们测试就可以把云函数部署到本地,然后进行测试,测试没问题再部署到云端。
本地部署云函数,其实很简单,右键我们的云函数,然后点击Run,就是部署到本地。
部署成功后如下
然后就可以测试了。测试也是用开发者工具自带的。开发者工具的最右侧的边栏有一个Cloud Functions Requestor,就是我们做云函数测试的工具。
不仅可以测试本地云函数,也可以测试云端云函数。
然后选择我们要测试的云函数
然后点Trigger就可以请求本地云函数了,可以看到云函数返回的信息如下。
可以看到我们代码里有一个logger.info(event),logger就是用来打印日志的,而event就是用来存储我们请求云函数时携带的参数。比如我们把请求参数改下,做下测试。可以看到控制台打印出来的请求参数。
我们的log打印info是默认黑色字体, 也可以用error打印红色日志。
改动代码如下
我们要测试云函数,就要记得,但凡代码有任何一点点改动,都要重新部署下云函数。还是部署到本地。
再请求云函数就可以看到控制台打印红色日志了
我们开发云函数肯定不仅仅只是在测试工具里测试用的。肯定要在代码里调用,接下来我们就在端侧,鸿蒙app里调用云函数,并传值给云函数。
3-10,端侧调用云函数
端侧调用云函数,我们可以去看下官方文档。我们直接使用云开发下的云函数调用的方法如下。
我们调用云函数其实很简单,在端侧的首页里写个按钮点击事件,点击按钮的时候调用云函数即可。代码如下
我们点击下按钮,会打印如下日志
返回的是一个对象,我们用json转为字符串如下
其实已经调用成功了,但是云函数的调用,目前只支持模拟器或者真机。预览里没法返回数据,所以接下来还有去安装模拟器。
3-11,安装模拟器打印云函数数据
点击工具里的设备管理器
可以看到我们还没有创建任何模拟器,一般需要在开发者工具里先登录开发者账号,才会出现下面这样。所以要记得先登录。
需要先下载镜像
等待镜像下载,镜像下载比较慢,需要耐心等待。。。。
下载好以后点下一个
保持默认,点击完成即可
创建好以后,点击绿色箭头,启动模拟器
可以看到模拟器在启动中。。。。第一次启动比较慢。
模拟器启动成功如下
然后运行端侧到模拟器
成功运行到模拟器
日志打印选中模拟器