ArkTS UI模型理解:不是在写代码,而是在“描述一棵树” 原创
头像 小鹿爱编程 2026-06-04 13:27:23    发布
8334 浏览 53 点赞 0 收藏

在写了几个最简单的页面之后,我开始逐渐意识到一个问题:

ArkTS 的 UI 写法,看起来很简单,但理解方式如果不对,后面很容易走偏。

一开始我也是把它当成“另一种语法”在看,但用了一段时间之后,感觉核心其实不在语法本身,而在它背后的 UI 模型。


核心不是语法,而是“结构描述方式”

比如最简单的一段代码:

Column() {  Text('A')}

刚看到这种写法的时候,很容易用已有经验去类比:像不像 HTML?是不是类似 JSX?或者只是一个函数调用?

但如果只停留在语法层,其实会有点误导。

我现在更倾向于这样理解这段代码:

这不是在“执行逻辑”,而是在描述一棵 UI 结构树

也就是说:

  • Column 不是一个普通函数调用
  • Text('A') 也不是简单的渲染语句

它们组合起来,其实是在声明一种结构关系:

Column └── Text('A')

这更像是一种“结构声明语言”,而不是命令式代码。


这棵“树”不是 DOM

一开始我会下意识把它和 Web 的 DOM 联系在一起,但很快发现不完全一样。

DOM 的特点是:

是浏览器里的运行时结构
可以被直接操作(增删改查)
强调节点和事件绑定

而 ArkTS 这套 UI,更像是一个“描述层”,而不是一个可以随意操作的运行时对象树。

换句话说:

它更像是一个“声明出来的结构”,而不是一个可以手动修改的对象集合。


更接近的类比:声明式 UI 框架

如果一定要找类比,我现在觉得更接近的是Flutter 的 Widget Tree还有SwiftUI 的 View Tree。它们有一个共同点:UI 不是“被操作出来的”,而是“被描述出来的”

你写的代码,本质上是在定义:页面长什么样、元素之间是什么层级关系和布局是如何嵌套的。。。而不是一步步去“创建组件、插入节点、更新属性”。

状态驱动

虽然我现在还没有深入写复杂交互,但在看一些示例和代码结构的时候,有一个模式已经开始变得明显:

UI 的变化,很可能是由“状态变化”驱动的,而不是手动更新。

也就是说,未来很可能是这样一条链路:

状态变化 → 触发 UI 重建 → 页面更新

而不是:

找到某个元素 → 修改它的属性 → 手动刷新

这个点我现在还没有完全验证,但基本可以预判如果还用“命令式思维”去写 UI,很容易出问题。比如:试图“直接修改某个组件”、期望 UI 局部更新而不是重建、不清楚状态和 UI 的绑定关系。

这些在声明式 UI 体系里,通常都会带来一些“看起来很奇怪”的问题。


当前阶段的一个理解模型

我现在对 ArkTS UI 的一个简化理解是:你写的不是界面,而是界面的结构描述。运行时根据这份描述生成 UI。UI 的变化由状态驱动,而不是手动控制

如果用一句更直白的话说:

不是“怎么画出来”,而是“它本来就应该长这样”。
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除

京ICP备:2022009079号-2

京公网安备:11010502051901号

ICP证:京B2-20230255