一、鸿蒙的“官方推荐”架构 鸿蒙官方在 ArkUI/ArkTS 和 Java HarmonyOS Ability 开发里,推荐用: 1.MVVM(官方最推) ArkUI/ArkTS 天然支持 数据驱动,也就是 MVVM 核心思想: Model:数据实体,普通类或 JS 对象 ViewModel:@Observed, @State, @Computed 等管理状态 View:ArkUI Column, Row, Stack 等 UI 组件 数据变化 → UI 自动刷新(无需手动 findView/updateView) 典型标志: @Observed class DeviceData { batteryPercent: number; online: boolean; } @Component struct DeviceItem { @ObjectLink data: DeviceData; build() { Column() { Text("电量: " + this.data.batteryPercent + "%") } } } 这个就是 ArkUI 的 MVVM 核心方式。 2.MVP / MVI(非官方也可用) MVP: Model: 数据实体 View: ArkUI 页面 Presenter: 普通 TypeScript / Java 类负责业务逻辑 这种方式在鸿蒙 Java 端和 ArkUI 前端都可以实现,但不如 MVVM 官方支持好。 使用场景:你想完全分离逻辑和 UI,类似 Android 老项目迁移。 MVI: 也是数据驱动,但强调 状态不可变 + 单向数据流 对于复杂页面(设备列表、巡检表格、地图轨迹)非常适合 二、鸿蒙开发特点与 Android 不同点 # Android 与 鸿蒙 ArkUI/ArkTS 特性对比 | 特性 | Android | 鸿蒙 ArkUI / ArkTS | |------|---------|------------------| | **数据绑定** | LiveData / ViewModel | `@State`, `@Observed` | | **UI 组件** | XML / Jetpack Compose | Column, Row, Stack, Text, Image | | **事件绑定** | `setOnClickListener` | `onClick={() => {...}}` | | **生命周期** | Activity / Fragment | Ability + Component | | **官方推荐架构** | MVVM + Jetpack | MVVM + ArkUI | 总结:鸿蒙官方就是 ArkUI + MVVM,几乎天然支持,直接用 @Observed/@State 就能做双向绑定。 三、鸿蒙项目常用 MVVM 模式结构 project/ │ ├─ model/ # 数据模型 │ └─ Device.ts │ ├─ view/ # 页面组件 │ └─ DevicePage.ts │ ├─ viewmodel/ # 管理状态、提供数据 │ └─ DeviceViewModel.ts │ ├─ service/ # 网络/设备/数据库服务 │ └─ DeviceService.ts └─ utils/ 使用方法: ViewModel 中保存状态 View 使用 @Observed 或 @State 绑定 ViewModel 数据 数据变化 → UI 自动刷新,无需手动更新 四、安卓开发经验迁移到鸿蒙 LiveData → @Observed/@State ViewModel → ArkTS/Java 对应 ViewModel 类 DataBinding / Jetpack Compose → Column/Row/Stack + build() MVP 的 Presenter → ArkTS 类 + 自己调用更新函数 核心区别:鸿蒙更偏 声明式 + 数据驱动,MVVM 天然支持,MVP 只能自己写。鸿蒙的“官方推荐”架构MVVM
张小明
前端开发工程师
鸿蒙启动后台服务运行
1.在module.json5中"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_BUNDLE_INFO"},{"name": "ohos.permission.KEEP_BACKGROUND_RUNNING"}],"pages…
适应症双扩+缓解率超70%:瑞维美尼的临床疗效与适用人群
作为针对性攻克难治性白血病的靶向药物,瑞维美尼的临床价值核心体现在明确的适应症覆盖与卓越的治疗效果上,尤其为复发或难治性患者提供了全新的生存希望。其获批的两大适应症精准聚焦临床治疗痛点,涵盖成人与儿童两大人群,打破了…
力扣139 单词拆分 java实现
139.单词拆分给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。示例 1:输入: s "leetcode…
基于SpringBoot+Vue的植物健康系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
💡实话实说:C有自己的项目库存,不需要找别人拿货再加价。摘要 随着城市化进程的加快和环境污染问题的日益突出,植物健康管理在生态保护和农业生产中的重要性逐渐凸显。传统植物健康监测主要依赖人工观察和实验室分析,效…
前后端分离学生评奖评优管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
💡实话实说:C有自己的项目库存,不需要找别人拿货再加价。摘要 随着教育信息化的不断推进,高校学生评奖评优管理工作的效率和公平性成为关注焦点。传统评奖评优流程依赖人工操作,存在数据冗余、流程繁琐、透明度不足等问…
【毕业设计】SpringBoot+Vue+MySQL 学生宿舍信息系统平台源码+数据库+论文+部署文档
💡实话实说:C有自己的项目库存,不需要找别人拿货再加价。摘要 随着高校规模的不断扩大和学生人数的持续增长,传统的学生宿舍管理模式逐渐暴露出效率低下、信息不透明和数据冗余等问题。学生宿舍作为高校管理的重要组成部分&#x…