鸿蒙:Harmony开发基础知识详解

这篇具有很好参考价值的文章主要介绍了鸿蒙:Harmony开发基础知识详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.概述

工欲善其事,必先利其器。

上一篇博文实现了一个"Hello Harmony"的Demo,今天这篇博文就以"Hello Harmony" 为例,以官网开发文档为依据,从鸿蒙开发主要的几个方面入手,详细了解一下鸿蒙开发所需的基础知识。

二.UI框架

HarmonyOS提供了一套UI开发框架,即方舟开发框架ArkUI框架

1.UI开发要素

方舟开发框架提供了多个应用UI开发要素:
    ● UI组件:(列表、网格、按钮、单选框、进度条、文本等)
    ● 布局计算
    ● 动画能力
    ● UI交互
    ● 绘制
    ● ......

2.两种开发范式

(1).两种开发范式介绍
  • 基于ArkTS的声明式开发范式(简称“声明式开发范式”)
  • 兼容JS的类Web开发范式(简称“类Web开发范式”)

鸿蒙开发文档,HarmonyOS,harmonyos,华为

声明式开发范式:基于TypeScript扩展而来的ArkTs语言进行声明式UI开发

类Web开发范式:采用经典的HML、CSS、JavaScript三段式开发方式
                             HML搭建布局、CSS描述样式、JavaScript处理逻辑。                           

类Web开发范式很像Web前端开发,便于快速将Web应用改造成鸿蒙应用

但是华为鸿蒙官方首推的是声明式开发范式

(2).方舟开发框架示意图

鸿蒙开发文档,HarmonyOS,harmonyos,华为

(3).方舟开发框架结构图

鸿蒙开发文档,HarmonyOS,harmonyos,华为

(3).两种开发范式比较

基于如下下几个优点,鸿蒙官方更推荐使用声明式开发范式来构建UI:

  • 开发效率:更接近自然语义的编程方式,直观地描述UI,无需关心UI绘制和渲染,高效简洁。
  • 应用性能:相比类Web开发范式,声明式开发范式无需JS框架进行页面DOM管理,渲染更新更精简,占用内存更少,性能更佳。
  • 发展趋势:后续会作为主推的开发范式持续演进,提供更丰富、更强大的能力

鸿蒙开发文档,HarmonyOS,harmonyos,华为

三.应用模型

1.两种应用模型

HarmonyOS的应用模型提供了应用程序必备的组件和运行机制,可以基于一套统一的模型进行应用开发。

HarmonyOS发展过程中,先后提供了两种应用模型:

  • FA(Feature Ability)模型: HarmonyOS API 7开始支持的模型,已经不再主推
  • Stage模型: HarmonyOS API 9开始新增的模型,是Harmony目前主推且会长期演进的模型

Stage模型提供了AbilityStage、WindowStage等类作为应用组件Window窗口“舞台”,所以被称为Stage模型

2.构成要素

HarmonyOS应用模型的构成要素包括:

  • 应用组件:应用的基本组成单位,也是运行入口,提供生命周期回调
  • 应用进程模型:定义应用进程的创建和销毁方式,以及进程间的通信方式
  • 应用线程模型:定义应用进程内线程的创建和销毁方式、主线程和UI线程的创建方式、线程间的通信方式
  • 应用任务管理模型:定义任务(Mission)的创建和销毁方式,以及任务与组件间的关系。HarmonyOS应用任务管理由系统应用负责,三方应用无需关注
  • 应用配置文件:包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、分发和运行阶段分别提供给编译工具、应用市场和操作系统使用

四.HarmonyOS APP包结构

HarmonyOS应用/服务发布形态为APP Pack(Application Package,简称APP)
它由一个或多个HAP(HarmonyOS Ability Package)包以及描述APP Pack属性的pack.info文件组成。

终端设备安装和云端(服务器)分发时,都是以HAP为单位进行安装和分发的。

一个HAP在工程目录中对应一个Module
它是由代码、资源、第三方库及应用/服务配置文件组成,
可以分为 Entry 和 Feature 两种类型:

  • Entry:应用/服务的主模块,可独立安装运行。
    (1).通常用于实现应用的入口界面、入口图标、主特性功能等。
    (2).一个APP中,对于同一类型的设备,可以包含一个或多个Entry类型的HAP,如果同一类型的设备包含多个Entry模块,需要配置distroFilter分发规则,使得应用市场在做应用的云端分发时,对该设备类型下不同规格的设备进行精确分发。

  • Feature:应用/服务的动态特性模块。
    (1).一个APP可以包含0个或多个Feature类型的HAP(像Android的".jar"和".aar")
    (2).
    可以配置成按需下载安装,也可以配置成随Entry类型HAP一起下载安装
    (3).只有包含Ability的HAP才能够独立运行。

module.json5配置文件中通过 type标签 配置“entry”“feature”类型

Ability是应用所具备的能力的抽象
(1).一个应用可以包含一个或多个Ability。
(2).Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。
(3).FA/PA是应用/服务的基本组成单元,能够实现特定的业务功能。
(4).FA有UI界面,而PA无UI界面。

Bundle:每个Harmony应用可以包含多个.hap文件,一个应用中的.hap文件合在一起称为一个Bundle,bundleName是应用的唯一标识(bundleName标签在app.json5配置文件中)。

需要特别说明的是:在应用上架到应用市场时,需要把应用包含的所有.hap文件(即Bundle)打包为一个.app后缀的文件用于上架,这个.app文件就是App Pack(Application Package),其中也包含了描述App Pack属性的pack.info文件。

鸿蒙开发文档,HarmonyOS,harmonyos,华为

五.Stage模型应用程序包结构

1.Moudle

Module是HarmonyOS应用/服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/服务配置文件。

每一个Module都可以独立进行编译和运行。(和Android中的Moudle一样)

Module分为“Ability”和“Library”两种类型:

  • Ability类型:编译后生成HAP(Harmony Ability Package)文件
  • Library类型:编译后生成HAR(Harmony Archive)文件,或者HSP(Harmony Shared Package)

DevEco Studio可以创建一个或者多个Module

2.Module与UIAbility组件关系示意图

鸿蒙开发文档,HarmonyOS,harmonyos,华为

注:下文中再提到的Module默认指的是“Ability”类型的Module。

3.应用程序包结构(Stage模型)

注:下文中提到的HAP包默认指的是Stage模型的HAP包

HAP包结构包括:

  • ets、libs、resources等文件夹
  • resources.index、module.json、pack.info等文件。

应用程序包结构图示:

鸿蒙开发文档,HarmonyOS,harmonyos,华为

  • ets目录:存放应用代码编译后的字节码文件。
  • libs目录:存放库文件(.so二进制文件)。
  • resources目录:存放应用的资源文件(字符串、图片等)
  • resources.index:资源索引表,由IDE编译工程时生成。
  • module.json:HAP配置文件,内容由工程配置中的module.json5和app.json5组成
  • pack.info:Bundle中用于描述每个HAP属性的文件
                       例如:app中的bundleName和versionCode信息、module中的name、type和                           abilities等信息,编译生成Bundle包时自动生成。

六.Stage模型ArkTS工程目录结构

以上一篇博客的"Hello Harmony" Demo为例,一个Stage模型ArkTS工程目录详细结构如下:

鸿蒙开发文档,HarmonyOS,harmonyos,华为

七.resources目录

鸿蒙应用的resources目录根据所包含的资源文件的类型不同,放置在不同的子目录下

resources目录包括三大类目录

  • base目录,默认存在
  • 限定词目录,开发者自行创建
  • rawfile目录,原始文件目录

资源文件查找顺序:

  • 优先从匹配的限定词目录中寻找
  • 没有匹配的限定词目录,或者在限定词目录中找不到,就会去base目录中找。

rawfile是原始文件目录,不会根据设备状态去匹配不同的资源

stage模型多工程情况下共有的资源文件放到AppScope下的resources目录。

资源目录示例

鸿蒙开发文档,HarmonyOS,harmonyos,华为

鸿蒙开发文档,HarmonyOS,harmonyos,华为

八.ArkTS代码组成拆解

点击按钮,文本内容从“Hello World”变为“Hello ArkUI”功能代码拆解

鸿蒙开发文档,HarmonyOS,harmonyos,华为

ArkTS 代码段的基本组成:

鸿蒙开发文档,HarmonyOS,harmonyos,华为

九.布局概述

1.布局结构

一个常见的页面结构如下所示:

鸿蒙开发文档,HarmonyOS,harmonyos,华为

Page表示页面的根节点,

ColumnRow等元素为系统组件,可以互换

Text、Image、List可以是其他任意系统组件或自定义组件

2.布局元素的组成

布局相关的容器组件可形成对应的布局效果。

鸿蒙开发文档,HarmonyOS,harmonyos,华为

  1. 虚线部分:组件布局边界
  2. 蓝色区域:组件区域
  3. 黄色区域:组件内容区
  4. 绿色方块:组件内容

3.如何选择布局

声明式UI提供了以下8种常见布局:

布局

应用场景

线性布局

Row、Column

需要线性排列时优先考虑此布局。

层叠布局

Stack

需要有堆叠效果时优先考虑此布局

弹性布局

Flex

与线性布局类似,但是默认能够使子组件压缩或拉伸。

子组件需要计算拉伸或压缩比例时优先使用此布局。

相对布局RelativeContainer

相对布局的布局方式更为自由。

通过在子组件上设置锚点规则(AlignRules)使子组件能够将自己在横轴、纵轴中的位置与容器或容器内其他子组件的位置对齐。

较复杂布局推荐使用

栅格布局

GridRow、GridCol

栅格通过将空间分割为有规律的栅格。

推荐手机、大屏、平板等不同设备,内容相同但布局不同时使用。

媒体查询@ohos.mediaquery

媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。

例如屏幕发生动态改变时更新应用的页面布局。

列表 

List

列表适合用于呈现同类数据类型或数据类型集,例如图片和文本。

网格

Grid

网格布局可以控制元素所占的网格数量、设置子组件横跨几行或者几列,

当网格容器尺寸发生变化时,所有子组件以及间距等比例调整。

轮播

Swiper

轮播组件通常用于实现广告轮播、图片预览、可滚动应用等。

4.布局位置

positionoffset等属性影响了布局容器相对于自身或其他组件的位置。

定位能力 实现方式
绝对定位 使用position实现绝对定位,控件位置相对无法自适应
相对定位 使用offset可以实现相对定位,控件位置相对可以自适应

十.DevEco Studio实用

DevEco Studio和Android Studio很像,他们都是基于IntelliJ IDEA开发工具演变而来。

但是DevEco Studio有一些和Android Studio有区别有很实用的地方。

1.Previewer

DevEco Studio有一个Previewer功能,在开发过程中能实时看到ts文件实现的UI效果。AndroidStudio针对XML布局文件也有个类似的Design功能,但是只能看到布局控件的区域排布,DevEco Studio的Previewer能直接实现最终UI效果和逻辑呈现,并且跟随代码实时更新

鸿蒙开发文档,HarmonyOS,harmonyos,华为

2.低代码UI开发

DevEco Studio有一个低代码开发UI的功能,实现了在开发过程中实时拖动控件进行UI开发。

这项功能的开关需要在工程创建时选择

打开Enable Super Visual,表示使用低代码开发功能开发应用/服务。

鸿蒙开发文档,HarmonyOS,harmonyos,华为

同步完成后,工程目录中自动生成低代码目录结构。

鸿蒙开发文档,HarmonyOS,harmonyos,华为

index.js:低代码页面的逻辑描述文件,定义了页面里所用到的所有的逻辑关系,比如数据、事件等。如果创建了多个低代码页面,则pages目录下会生成多个页面文件夹及对应的js文件。

index.visual:visual文件存储低代码页面的数据模型,双击该文件即可打开低代码页面,进行可视化开发设计。如果创建了多个低代码页面,则pages目录下会生成多个页面文件夹及对应的visual文件。

打开“index.visual”文件,即可进行页面的可视化布局设计与开发

鸿蒙开发文档,HarmonyOS,harmonyos,华为

十一.结束语

鸿蒙应用开发的基础知识就先讲解到这里

后续随着HarmonyOS学习的深入,本博文会持续更新鸿蒙开发需要掌握的基础知识点。文章来源地址https://www.toymoban.com/news/detail-751339.html

到了这里,关于鸿蒙:Harmony开发基础知识详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)下篇

    onRequestSelected onRequestSelected(callback: () = void) 当Web组件获得焦点时触发该回调。 示例: onScreenCaptureRequest10+ onScreenCaptureRequest(callback: (event?: { handler: ScreenCaptureHandler }) = void) 通知收到屏幕捕获请求。 参数: 参数名 参数类型 参数描述 handler ScreenCaptureHandler 通知Web组件用户操作行

    2024年04月09日
    浏览(44)
  • 【Audio音频开发】音频基础知识及PCM技术详解

    个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 现实生活中,我们听到的声音都是时间连续的,我们称为这种信号叫 模拟信号 。模拟信号需要进行 数字化 以后才能在计算机中使用。 目前我们在计算机上

    2024年02月03日
    浏览(36)
  • 信息检索(基础知识一)——词项-文档关联矩阵及倒排索引构建

      (本文中用到的文件名为:hyatt-k) 利用文件读取方法对给定邮件数据集中的文本文件进行预处理,并按照图1中的词项词典构造流程生成词项词典。  针对给定的邮件数据集和生成的词项词典,建立词项文档关联矩阵(如图1-1所示)  针对给定的邮件数据集和生成的词项词

    2024年02月08日
    浏览(37)
  • 鸿蒙Harmony-层叠布局(Stack)详解

    我们总是为了太多遥不可及的东西去拼命,却忘了人生真正的幸福不过是灯火阑珊处的温暖,柴米油盐的充实,人生无论你赚的钱,是多还是少,经历的事情是好还是坏,都不如过好当下的每一天!  目录 一,定义 二,开发布局 三,对齐方式 3.1 TopStart顶部起始端  3.2 To

    2024年01月18日
    浏览(47)
  • 鸿蒙Harmony-页面路由(router)详解

    慢慢理解世界,慢慢更新自己,希望你的每一个昨天,今天,和明天都会很快乐,你知道的,先好起来的从来都不是生活,而是你自己  目录 一,定义 二,页面跳转 2.1使用router.pushUrl 2.2 使用router.replaceUrl 2.3 使用Single模式 2.4 带参数的跳转  三,页面返回  3.1返回到上一个页

    2024年01月20日
    浏览(39)
  • 鸿蒙Harmony-列表组件(List)详解

    不要和别人比生活,每个人阶段不同,追求不同,活法自然也不同。只要今天的你能比昨天的你快乐一点点,那你就是自己人生赢家。 目录 一,定义 二,布局与约束 2.1 布局 2.2 约束 三,开发布局 3.1 设置主轴方向 3.2设置交叉轴布局 四,迭代列表内容 五,自定义列表样式

    2024年01月17日
    浏览(38)
  • 鸿蒙Harmony-相对布局(RelativeContainer)详解

    成年人的世界,从来没有容易二字,想要什么,就得凭自己的努力去拿,遇到事情就得自己生生的硬抗,希望你即使再辛苦,但还是会选择这滚烫的人生,加油陌生的朋友们 目录 一,定义 二,设置依赖关系 2.1 锚点设置 2.2 设置相对于锚点的对齐位置 RelativeContainer为采用相

    2024年02月01日
    浏览(43)
  • Harmony鸿蒙南向驱动开发流程

    HDF(Hardware Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理、驱动消息机制和配置管理。并以组件化驱动模型作为核心设计思路,让驱动开发和部署更加规范,旨在构建统一的驱动架构平台,为驱动开发者提供更精准、更高效的驱动

    2024年04月27日
    浏览(30)
  • 鸿蒙Harmony--状态管理器--@Prop详解

    纵横千里独行客,何惧前路雨潇潇。夜半浊酒慰寂寞,天明走马入红尘。且将新火试新茶,诗酒趁年华。青春以末,壮志照旧,生活以悟,前路未明。时间善变,可执着翻不了篇。时光磨我少年心,却难灭我少年志,壮士活古不活皮。加油。 目录 一,定义 二,装饰器使用规

    2024年02月01日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包