浅析HarmonyOS开发语言ArkTS

语雀知识库地址:语雀HarmonyOS知识库

飞书知识库地址:飞书HarmonyOS知识库


本文示例代码地址:Gitee 仓库地址

哈喽呀,我是小白

在上一篇文章中为大家介绍了鸿蒙方舟开发框架 ArkUI,在文中提到了鸿蒙应用声明式开发语言 ArkTS,这篇文章我们就来扒一扒这神秘的 ArkTS 语言

ArkTS是 HarmonyOS 目前主力应用开发语言。它围绕应用开发在TypeScript 生态基础上做了进一步扩展,继承了 TS 的所有特性,是 TS 的超集

因此,在学习 HarmonyOS 之前建议大家先将 TS 的基本语法落实

ArkTS 与 TypeScript 和 JavaScript 的关系如下所示

ArkTS 在 TS 之上,做了以下三处扩展:

  • 定义了声明式 UI 描述、自定义组件和动态扩展 UI 元素的能力,再配合 ArkUI 开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了 UI 开发的主体
  • 提供了多维度的状态管理机制。在 UI 开发框架中,与 UI 相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。利用这些能力可以灵活的实现数据和 UI 的联动
  • 提供了渲染控制的能力。条件渲染可根据应用的不同状态,渲染对应状态下的 UI 内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。数据懒加载从数据源中按需迭代数据,并在每次迭代过程中创建相应的组件

而在不久的将来,ArkTS 会逐步增强并行与并发能力、系统类型、分布式开发范式等更多特性

语法描述

我们以一个用户点击按钮改变文字内容的案例来说明 ArkTS 的组成

ArkTS 的基本组成

在本示例中,ArkTS 的基本组成如下图所示

其中:

  • 装饰器 : 用于装饰类、结构、方法以及变量,赋予其特殊的含义。如本示例中 @Entry@Component@State都是装饰器,@Component 表示自定义组件,@Entry 表示该自定义组件为入口组件,@State 表示组件中的状态变量,状态变量变化会触发UI刷新
  • UI描述:以声明式的方式来描述 UI 的结构,例如 build() 方法中的代码块
  • 自定义组件:可复用的UI单元,可组合其他组件,如上述被 @Component 装饰的 struct Hello
  • 系统组件:ArkUI 框架中默认内置的基础和容器组件,可直接被调用,比如本例中的 Column、Text、Divider、Button
  • 属性方法:组件可以通过链式调用配置多项属性,如 fontSize()、width()、height()、backgroundColor() 等
  • 事件方法:组件可以通过链式调用设置多个事件的响应逻辑,如跟随在 Button 后面的 onClick() 事件

组件的通用属性方法

在 ArkTS 中,有很多不同类型的组件

比如基础组件 Text 文本、Button 按钮、Radio 单选、CheckBox 多选框,容器组件 Column、Row、Flex、Stack

除此之外,还有媒体组件、绘制组件、画布组件等等

而这些组件都有相同的通用属性、通用事件和手势控制

在编辑器中,通过将鼠标悬浮于组件上后,会浮出当前组件的介绍,点击 Show in API Reference 可以在编辑器中快速查看当前组件的相关介绍,包括组件属性,使用示例等

通用属性(举例)

尺寸相关
  • width():设置组件自身的宽度
  • height():设置组件自身的高度
  • padding():设置组件的内边距
  • margin():设置组件的外边距
位置相关
  • align():设置元素内容在元素绘制区域内的对齐方式
  • direction():设置元素水平方向的布局
边框相关
  • border():统一边框样式设置接口
  • borderStyle():设置元素的边框样式
  • borderWidth():设置元素的边框宽度,不支持百分比
  • borderColor():设置元素的边框颜色

通用事件(举例)

  • 点击事件 onClick(event: (event?: ClickEvent) => void)
  • 触摸事件 onTouch(event: (event?: TouchEvent) => void)
  • 按键事件 onKeyEvent(event: (event?: KeyEvent) => void)

手势处理

  • 基础手势:单击、双击、长按、拖动、捏合等
  • 组合手势:手势识别组合,即多种手势组合为复合手势,支持连续识别、并行识别和互斥识别
  • 绑定手势:为组件绑定不同类型的手势事件,并设置事件的响应方法
相关推荐
小强在此9 小时前
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
华为·开源·团队开发·智慧农业·harmonyos·开源鸿蒙
PlumCarefree13 小时前
基于鸿蒙API10的RTSP播放器(四:沉浸式播放窗口)
华为·harmonyos
中关村科金16 小时前
中关村科金推出得助音视频鸿蒙SDK,助力金融业务系统鸿蒙化提速
华为·音视频·harmonyos
小强在此20 小时前
基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
华为·开源·团队开发·健康医疗·harmonyos·开源鸿蒙
奔跑的露西ly1 天前
【鸿蒙 HarmonyOS NEXT】popup弹窗
华为·harmonyos
OH五星上将1 天前
OpenHarmony(鸿蒙南向开发)——轻量和小型系统三方库移植指南(一)
嵌入式硬件·移动开发·harmonyos·openharmony·鸿蒙开发·鸿蒙移植
codes234577891 天前
鸿蒙开发之ArkTS 界面篇 一
harmonyos·arkts·harmonyos next·deveco-studio·鸿蒙界面·鸿蒙界面入门·鸿蒙 index.ets
HarmonyOS_SDK2 天前
免弹窗、预授权,默认界面扫码能力打造系统级扫码体验
harmonyos
追风小老头折腾程序2 天前
实战06-LazyForEach
harmonyos