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

手势处理

  • 基础手势:单击、双击、长按、拖动、捏合等
  • 组合手势:手势识别组合,即多种手势组合为复合手势,支持连续识别、并行识别和互斥识别
  • 绑定手势:为组件绑定不同类型的手势事件,并设置事件的响应方法
相关推荐
nashane6 小时前
HarmonyOS 6学习:CapsLock键失效诊断与长截图完整实现指南
学习·华为·harmonyos
richard_yuu8 小时前
鸿蒙心理测评模块实战|PHQ-9/GAD7双量表答题、实时计分与结果本地化存储
华为·harmonyos
不爱吃糖的程序媛11 小时前
2026年Electron 鸿蒙PC环境搭建指南
人工智能·华为·harmonyos
nashane11 小时前
HarmonyOS 6学习:长截图功能开发中的滚动拼接与权限处理实战
人工智能·华为·harmonyos
大师兄666813 小时前
从零开发一个 HarmonyOS 输入法——KikaInputMethod 完整拆解
harmonyos·服务卡片·harmonyos6·formkit
Python私教18 小时前
鸿蒙 NEXT 也能接 MCP?用 ArkTS 跑通 AI Agent 工具链
人工智能·华为·harmonyos
Swift社区20 小时前
分布式能力在鸿蒙 PC 上到底怎么用?
分布式·华为·harmonyos
nashane1 天前
HarmonyOS 6学习:外接键盘CapsLock与长截图功能的实战调试与完整解决方案
学习·华为·计算机外设·harmonyos
aqi002 天前
一文理清 HarmonyOS 6.0.2 涵盖的十个升级点
android·华为·harmonyos·鸿蒙·harmony