浅析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)

手势处理

  • 基础手势:单击、双击、长按、拖动、捏合等
  • 组合手势:手势识别组合,即多种手势组合为复合手势,支持连续识别、并行识别和互斥识别
  • 绑定手势:为组件绑定不同类型的手势事件,并设置事件的响应方法
相关推荐
Damon小智2 小时前
HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别
华为·harmonyos
爱笑的眼睛1120 小时前
uniapp 极速上手鸿蒙开发
华为·uni-app·harmonyos
K.P20 小时前
鸿蒙元服务从0到上架【第三篇】(第二招有捷径)
华为·harmonyos·鸿蒙系统
K.P21 小时前
鸿蒙元服务从0到上架【第二篇】
华为·harmonyos·鸿蒙系统
敲代码的小强1 天前
Flutter项目兼容鸿蒙Next系统
flutter·华为·harmonyos
程序猿会指北1 天前
纯血鸿蒙APP实战开发——Text实现部分文本高亮和超链接样式
移动开发·harmonyos·arkts·openharmony·arkui·组件化·鸿蒙开发
鸿蒙自习室1 天前
鸿蒙开发——关系型数据库的基本使用与跨设备同步
前端·数据库·华为·harmonyos·鸿蒙
SoraLuna2 天前
「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具
开发语言·macos·ui·华为·harmonyos
资讯分享周2 天前
鸿蒙风起,未来已来——云学堂鸿蒙应用认证开营啦!
华为·harmonyos
Lincode122 天前
HarmonyOS--鸿蒙三方库--lottie
华为·harmonyos