news 2026/3/24 0:51:24

HarmonyOS 多页面架构设计模式总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS 多页面架构设计模式总结

——从“能跑”到“可维护、可扩展”的工程化实践

在 HarmonyOS 项目中,页面数量一旦超过 5 个,如果没有清晰的多页面架构设计,很快就会出现以下问题:

  • 路由混乱,页面之间互相跳转像“意大利面”

  • 页面状态靠参数硬传,改一个页面牵一片

  • 生命周期逻辑分散,难以统一管理

  • 后期加新功能,不敢动老代码

本文将结合Stage 模型 + ArkUI,系统性总结 HarmonyOS 多页面架构的设计模式与最佳实践,帮你把项目从“Demo 级”升级到“工程级”。


一、HarmonyOS 的多页面基础认知

在 Stage 模型下,HarmonyOS 的页面体系核心是:

Application └── Ability (UIAbility) └── Window └── Page(ArkUI 页面)

页面切换的本质

  • HarmonyOS不是 Activity 栈

  • 页面通过Router管理

  • UIAbility 通常只有 1 个(推荐)

结论
多页面 ≠ 多 Ability,而是多 Page


二、最基础的架构:单 Ability + Router 页面栈

推荐起手式

entry/ ├── pages/ │ ├── Home.ets │ ├── Detail.ets │ ├── Login.ets │ └── Profile.ets └── EntryAbility.ets

路由跳转示例

import router from '@ohos.router'; router.pushUrl({ url: 'pages/Detail', params: { id: 1001 } });

页面接收参数

@Entry @Component struct Detail { aboutToAppear() { const params = router.getParams() as { id: number }; console.info('id:', params.id); } }

✔ 简单
参数泛滥、页面强耦合


三、进阶一:路由分层设计(Router 封装模式)

问题

  • 页面中到处router.pushUrl

  • URL 写死,改路径成本极高

解决方案:统一路由层

common/ └── router/ ├── RouteMap.ts └── AppRouter.ts
RouteMap.ts
export enum RoutePath { HOME = 'pages/Home', DETAIL = 'pages/Detail', LOGIN = 'pages/Login' }
AppRouter.ts
import router from '@ohos.router'; import { RoutePath } from './RouteMap'; export class AppRouter { static toDetail(id: number) { router.pushUrl({ url: RoutePath.DETAIL, params: { id } }); } static toLogin() { router.replaceUrl({ url: RoutePath.LOGIN }); } }
页面中使用
AppRouter.toDetail(1001);

好处

  • 页面不关心路由细节

  • 路径集中管理

  • 方便后期埋点 / 权限校验


四、进阶二:页面职责拆分(Page ≠ Logic)

错误示范(典型新手写法)

@Component struct Home { async loadData() { // 网络 // 缓存 // 数据处理 } }

推荐模式:Page + ViewModel

pages/ ├── Home/ │ ├── HomePage.ets │ └── HomeViewModel.ets
HomeViewModel.ts
@ObservedV2 export class HomeVM { @Local list: string[] = [] async load() { this.list = ['A', 'B', 'C'] } }
HomePage.ets
@ComponentV2 struct HomePage { private vm = new HomeVM() aboutToAppear() { this.vm.load() } build() { List() { ForEach(this.vm.list, item => { Text(item) }) } } }

本质

  • 页面只负责展示

  • 逻辑可测试、可复用


五、进阶三:全局状态 + 页面解耦

典型场景

  • 登录状态

  • 用户信息

  • 权限信息

全局状态容器

@ObservedV2 export class AppStore { @Local isLogin = false @Local userName = '' } export const appStore = new AppStore()

页面中使用

@ComponentV2 struct Profile { build() { if (appStore.isLogin) { Text(`欢迎:${appStore.userName}`) } else { Button('去登录').onClick(() => { AppRouter.toLogin() }) } } }

页面不再直接互相依赖,而是通过状态协作


六、进阶四:多页面生命周期协同设计

常用生命周期

生命周期场景
aboutToAppear页面进入
onPageShow可见
onPageHide被覆盖
aboutToDisappear离开

推荐实践

  • 数据加载:aboutToAppear

  • 埋点 / 动画:onPageShow

  • 暂停任务:onPageHide

aboutToAppear() { this.vm.load() } onPageHide() { this.vm.pauseTimer() }

七、进阶五:模块化多页面架构(大项目必备)

目录示例

features/ ├── login/ ├── home/ ├── order/ └── profile/

每个 feature 自己管理:

  • 页面

  • ViewModel

  • 路由注册

效果

  • 模块可插拔

  • 多人协作冲突少

  • 接近 Android 的 Feature 模块化


八、HarmonyOS 多页面架构最佳实践总结

一句话总结

页面只负责 UI,路由统一管理,状态集中托管,逻辑模块化拆分

推荐组合

  • Stage 模型 + 单 UIAbility

  • Router 封装

  • ViewModel(@ObservedV2)

  • 全局 Store

  • Feature 模块化


九、结语

HarmonyOS 的多页面架构并不复杂,难点不在 API,而在工程设计意识

如果你:

  • 正在从 Android 转 HarmonyOS

  • 或正在做一个中大型鸿蒙项目

那么尽早建立清晰的多页面架构,会极大降低后期维护成本

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/17 8:50:32

C#中的Action、Func、Predicate委托

C# 委托详解:Action、Func 和 Predicate 的使用指南 一 Action委托可以理解为数组,专门存放函数的数组 Action 委托表示一个不返回值的委托,那就表示只能存放不返回值的方法,即void方法using System; using System.Collections.Ge…

作者头像 李华
网站建设 2026/3/18 5:53:35

GLM-TTS情感控制技巧:如何让合成语音更自然生动

GLM-TTS情感控制技巧:如何让合成语音更自然生动 在虚拟主播的直播间里,一句平淡无奇的“欢迎新朋友”可能被淹没在弹幕洪流中;而如果这句问候带着恰到好处的热情与笑意,哪怕只是多了一丝语调起伏,也能瞬间拉近与观众的…

作者头像 李华
网站建设 2026/3/16 23:37:06

低成本实现高质量TTS:GLM-TTS在消费级显卡上的运行表现

低成本实现高质量TTS:GLM-TTS在消费级显卡上的运行表现 在智能语音助手、有声读物生成和虚拟偶像直播日益普及的今天,一个现实问题始终困扰着开发者与内容创作者:如何以合理的成本获得接近真人水平的语音合成效果?传统高质量TTS系…

作者头像 李华
网站建设 2026/3/21 10:59:25

语音合成也能有情感?揭秘GLM-TTS的情感迁移机制

语音合成也能有情感?揭秘GLM-TTS的情感迁移机制 在虚拟主播深情演绎故事、智能客服温柔安抚用户情绪的今天,我们早已不再满足于“机器能说话”——我们希望它说得动情。这背后,是语音合成技术从“发音准确”迈向“表达自然”的关键跃迁。而在…

作者头像 李华
网站建设 2026/3/21 13:51:01

构建GLM-TTS用户成长体系:等级、勋章与激励机制

构建GLM-TTS用户成长体系:等级、勋章与激励机制 在AI语音合成工具日益普及的今天,一个尖锐的问题摆在开发者面前:技术越强大,使用门槛反而越高。GLM-TTS这样的开源项目虽然具备方言克隆、情感迁移和音素级控制等前沿能力&#xff…

作者头像 李华
网站建设 2026/3/23 0:28:31

脑肿瘤检测数据集-3000张JPG医学图像-有肿瘤无肿瘤分类标注-用于AI算法训练与临床辅助诊断-脑肿瘤检测算法-脑肿瘤自动化检测技术-脑肿瘤检测模型-提升医学影像分析的自动化水平

脑肿瘤检测数据集分析报告 引言与背景 脑肿瘤检测是医学影像学领域的重要研究方向,早期准确诊断对患者治疗和预后至关重要。随着人工智能技术的发展,基于深度学习的脑肿瘤检测算法已成为辅助医生诊断的重要工具。本数据集为脑肿瘤检测算法的训练和评估…

作者头像 李华