小鹿爱编程 2026-06-04 13:27:23 发布在写了几个最简单的页面之后,我开始逐渐意识到一个问题:
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 的变化由状态驱动,而不是手动控制
如果用一句更直白的话说:
不是“怎么画出来”,而是“它本来就应该长这样”。
相关推荐
张妍希
1455
0
进哥聊编程
2051
0
周正
3966
0
果粒蹬
2475
0
小鹿爱编程
我还没有写个人简介......
帖子
提问
粉丝
江西南昌:打造科技服务新场景 鸿蒙智行超体中心启幕
2026-06-30 13:41:43 发布ArkTS UI模型理解:不是在写代码,而是在“描述一棵树”
2026-06-04 13:27:23 发布
京公网安备:11010502051901号