传统 App 与鸿蒙 ArkUI:UI 架构差异解析

传统 App 与鸿蒙 ArkUI:UI 架构差异解析
在这里插入图片描述

子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名)

大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。

我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。

技术方向:前端 / 跨端 / 小程序 / 移动端工程化
内容平台:掘金、知乎、ZEEKLOG、简书
创作特点:实战导向、源码拆解、少空谈多落地
文章状态:长期稳定更新,大量原创输出

我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。

子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源(工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学“明白”,也用“到位”

持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱

文章目录

引言

如果你过去做过 iOS、Android 或 Flutter 开发,大概率已经形成了一套非常熟悉的 UI 架构思维:

  • 页面(Page / ViewController)
  • 组件(View / Widget)
  • 状态(State)
  • 路由(Router)

换句话说,大多数传统 App 的 UI 架构,其实都围绕一个核心展开:

页面(Page)

页面负责:

  • 承载 UI
  • 管理状态
  • 响应用户事件
  • 调用业务逻辑

但当开发者开始接触 鸿蒙 ArkUI 时,很快会发现一件事情:

ArkUI 的 UI 架构思维,并不是传统 App 那一套。

很多 iOS / Android 开发者第一次写 ArkUI 时都会有一种感觉:

  • UI 写法很像 SwiftUI / Compose
  • 但系统结构又完全不同
  • 页面概念似乎被“弱化”了

这背后的原因,其实是:

鸿蒙 UI 架构从一开始就不是为“单设备 App”设计的。

而是为 分布式系统 UI 设计的。

传统 App 的 UI 架构是怎样的

在理解 ArkUI 之前,我们先看传统 App 的 UI 结构。几乎所有移动 App 都遵循类似结构:

App ├── Tab │ ├── Page │ │ ├── View │ │ ├── View │ │ └── View │ └── Page └── Page 

典型流程是:

用户 → 打开 App → 进入页面 → 与组件交互

核心结构就是:

页面 → 组件 → 状态

页面是 UI 的核心容器

在 iOS 中,一个页面通常就是一个 UIViewController

classArticleViewController:UIViewController{overridefuncviewDidLoad(){super.viewDidLoad()let label =UILabel() label.text ="Hello iOS" view.addSubview(label)}}

在 Android 中:

class ArticleActivity :AppCompatActivity(){overridefunonCreate(savedInstanceState: Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_article)}}

在 Flutter 中:

classArticlePageextendsStatelessWidget{@overrideWidgetbuild(BuildContext context){returnScaffold( body:Text("Hello Flutter"),);}}

这些 UI 框架虽然写法不同,但核心思想是一致的:

UI 必须挂在页面下面。

页面是:

  • 生命周期中心
  • 状态中心
  • UI 渲染中心

ArkUI 的 UI 架构为什么不同

在 ArkUI 中,你很少看到:

  • Activity
  • ViewController
  • Fragment

ArkUI 的核心不是“页面类”,而是:

组件(Component)

页面只是一个 组件入口

ArkUI 页面其实是一个组件

例如一个简单 ArkUI 页面:

@Entry@Component struct HomePage {build(){Column(){Text("Hello ArkUI").fontSize(24)Button("点击")}}}

这里看起来像是“页面”,但实际上:

HomePage └── Column ├── Text └── Button 

ArkUI 的 UI 本质是:

组件树(Component Tree)

而不是页面树。

状态管理方式的差异

传统 App 的状态通常放在:

  • ViewController
  • ViewModel
  • Bloc
  • Store

但 ArkUI 更强调:

响应式状态

ArkUI 响应式状态

@Entry@Component struct CounterPage {@State count:number=0build(){Column(){Text(`Count: ${this.count}`).fontSize(30)Button("增加").onClick(()=>{this.count++})}}}

这里有一个关键变化:

状态变化 → UI 自动更新 

开发者不需要:

  • 手动刷新 UI
  • 通知 View
  • 调用 setState

ArkUI 会自动完成。

传统 UI 更新 vs ArkUI 更新

传统 UI 更新逻辑:

用户点击 ↓ 修改状态 ↓ 通知 UI 更新 ↓ 重新渲染 

例如 Flutter:

setState((){ count++;});

而 ArkUI:

this.count++

ArkUI 会自动触发 UI 更新,本质是:

声明式 UI + 响应式状态

组件复用方式的差异

传统 App 的 UI 复用通常通过:

  • 自定义 View
  • 自定义 Widget
  • Fragment

例如 Flutter:

classCardViewextendsStatelessWidget{finalString title;CardView(this.title);@overrideWidgetbuild(BuildContext context){returnCard( child:Text(title),);}}

而 ArkUI:

@Component struct CardView { title:stringbuild(){Row(){Text(this.title)}}}

ArkUI 的组件结构更轻量。

UI 布局思想的差异

传统 UI 布局通常依赖:

  • ConstraintLayout
  • AutoLayout
  • Flexbox

例如 iOS:

View ├── Top constraint ├── Leading constraint └── Width constraint 

而 ArkUI 主要依赖:

  • Column
  • Row
  • Flex
  • Stack

例如:

Column(){Text("标题")Row(){Button("确认")Button("取消")}}

布局逻辑更接近:

线性布局 + 组合布局

而不是复杂约束系统。

跨设备 UI 是最大不同

传统 App 的 UI 只需要考虑:

  • 手机屏幕

但鸿蒙需要考虑:

  • 手机
  • 平板
  • PC
  • 车机
  • IoT

这意味着 UI 架构必须具备:

跨设备适配能力

ArkUI 响应式布局示例

@Entry@Component struct AdaptivePage {build(){Column(){if(DeviceInfo.deviceType ==='phone'){PhoneLayout()}else{TabletLayout()}}}}

同一套代码适配不同设备。

分布式 UI 是鸿蒙最大的不同

鸿蒙不仅支持跨设备 UI,还支持 分布式 UI

例如:

  • 手机点击按钮
  • 平板展示内容

示例:

import distributedData from'@ohos.data.distributedData'asyncfunctionsyncData(){await kvStore.put("article_id","1001")}

另一设备读取:

let id =await kvStore.get("article_id")openArticle(id)

UI 不再局限在单设备。

对开发者意味着什么

如果你是传统 App 开发者,迁移到 ArkUI 需要改变三件事。

第一 页面思维 → 组件思维

过去:

页面 → 控制 UI 

现在:

组件 → 组成 UI 

页面只是组件入口。

第二 生命周期思维 → 状态思维

过去:

  • viewDidLoad
  • onResume
  • onPause

现在更重要的是:

状态变化

第三 单设备 UI → 分布式 UI

过去只需要考虑:

  • 一块屏幕

现在需要考虑:

  • 多设备
  • 多窗口
  • 跨设备协同

总结

传统 App 的 UI 架构核心是:

页面驱动 

而鸿蒙 ArkUI 的 UI 架构核心是:

组件驱动 

两者的差异可以总结为:

传统 App鸿蒙 ArkUI
页面中心组件中心
生命周期驱动状态驱动
单设备 UI分布式 UI
页面导航组件组合

理解这一点之后,你就会发现:

ArkUI 不是简单换了一套 UI 写法。

它背后的目标,是支持:

  • 多设备
  • 分布式
  • AI 原生应用

这也是为什么越来越多开发者在学习鸿蒙时,会感觉:

这不仅是一套新的 UI 框架,更是一种新的应用架构。

Read more

SkyWalking - 支持的中间件清单:Spring Cloud、Dubbo、RocketMQ、ShardingSphere 等

SkyWalking - 支持的中间件清单:Spring Cloud、Dubbo、RocketMQ、ShardingSphere 等

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕SkyWalking这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 🌐 SkyWalking —— 全链路监控利器,支持 Spring Cloud、Dubbo、RocketMQ、ShardingSphere 等主流中间件 * 🚀 为什么选择 SkyWalking? * 🧩 SkyWalking 架构概览 * 📦 环境准备 * 1. 下载 SkyWalking * 2. 启动 OAP 和 UI * ☁️ Spring Cloud 集成示例 * Maven 依赖(非必须,Agent 自动注入) * 启动参数配置 * 示例代码:Feign 调用链追踪 * 🔗 Dubbo 集成示例 * 启动参数(同

By Ne0inhk
FARS全自动科研系统技术深度解析:从多智能体架构到工业化科研范式

FARS全自动科研系统技术深度解析:从多智能体架构到工业化科研范式

前言 2026年2月12日至2月22日,一场持续228小时33分钟的直播在全球AI社区引发了持续震荡。屏幕另一端,一个名为FARS(Fully Automated Research System)的全自动研究系统,在没有人类干预的情况下,自主完成了从文献调研到论文撰写的完整科研流程,最终产出100篇学术论文,总消耗114亿Token,成本10.4万美元。 这场实验的意义远不止于“AI写论文”的简单升级。它向世界展示了科学发现的根本范式正在发生转移——从依赖人类灵感的“手工作坊”,转向由AI驱动的“工业化流水线”。本文将从最底层的技术细节出发,逐层拆解FARS的系统架构、智能体协作机制、资源调度策略、成本控制模型,以及与竞品的技术对比,为读者呈现一个完整的全自动科研系统技术图谱。 第一章 系统总体架构:四智能体流水线设计 1.1 核心设计理念:研究系统的第一性原理 FARS的设计并非简单地模仿人类科研流程,而是基于团队对“研究系统”本质的重新思考。创始团队提出,一个理想的研究系统应遵循两条基本原则: 1. 高效拓展知识边界:系统的吞吐量应成为核心评估指标,而非单篇论文的完

By Ne0inhk
MySQL 数据库基础入门:从概念到实战

MySQL 数据库基础入门:从概念到实战

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 数据库核心概念:为什么需要数据库? * 1.1 文件存储的痛点 * 1.2 数据库的定义与价值 * 1.3 服务器、数据库、表的关系 * 二. 主流数据库对比:为什么选择 MySQL? * 三. MySQL 安装与连接:从零开始配置 * 3.1 支持的操作系统 * 3.2 连接 MySQL 服务器 * 3.3 服务器管理(Windows) * 四. MySQL 实战:

By Ne0inhk
OpenClaw多设备协同:手机+电脑分布式节点,跨端任务自动化

OpenClaw多设备协同:手机+电脑分布式节点,跨端任务自动化

文章目录 * 当"用手机修电脑"不再是段子 * 架构揭秘:Gateway是大脑,Nodes是手脚 * 动手实战:把你的手机变成AI的外挂设备 * 第一步:确认Gateway处于"远程模式" * 第二步:手机端配对流程 * 第三步:验证节点能力 * 场景实战:那些只有多设备协同才能干成的活儿 * 场景一:移动端触发,PC端执行(Mobile-to-Desktop) * 场景二:PC端决策,移动端采集(Desktop-to-Mobile) * 场景三:多节点并行任务(Swarm模式) * 技术原理:MCP协议让万物互联成为可能 * 避坑指南:别让你的分布式系统变成"分布死"系统 * 网络连通性是第一要义 * 权限管理要精细 * 电池与性能考虑 * 未来展望:从"多设备"到&

By Ne0inhk