news 2026/3/1 6:17:39

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/2/27 15:43:52

自媒体创作者福音:用GLM-TTS快速生成短视频配音

自媒体创作者福音:用GLM-TTS快速生成短视频配音 在短视频内容爆炸式增长的今天,一个账号每天可能需要产出数条甚至数十条视频。而每一条视频背后,都少不了画外音——那熟悉又富有感染力的“主播声线”。过去,这往往依赖真人配音或…

作者头像 李华
网站建设 2026/2/28 19:31:55

使用Netlify Functions扩展GLM-TTS后端能力

使用 Netlify Functions 扩展 GLM-TTS 后端能力 在内容创作与交互式 AI 应用日益普及的今天,高质量语音合成已成为提升用户体验的关键一环。像播客自动配音、个性化有声书生成、虚拟主播驱动等场景,都对灵活可控的 TTS(文本到语音&#xff09…

作者头像 李华
网站建设 2026/2/26 19:57:18

如何用GLM-TTS生成企业宣传片旁白提升品牌形象

如何用 GLM-TTS 打造高辨识度企业宣传片旁白 在品牌竞争日益激烈的今天,一段富有感染力的宣传片旁白,往往能成为观众记住一家企业的第一把钥匙。传统上,这类高质量语音内容依赖专业配音演员录制——成本动辄数千元,周期长达数日&a…

作者头像 李华
网站建设 2026/2/26 19:13:27

GLM-TTS与Zapier集成:实现跨平台自动化语音生成

GLM-TTS与Zapier集成:实现跨平台自动化语音生成 在内容爆炸的时代,用户对个性化、实时化的声音体验需求正在急剧上升。从智能客服的自动播报,到教育平台的语音课件生成,再到为视障人群提供无障碍阅读服务——高质量语音内容的生产…

作者头像 李华
网站建设 2026/2/28 13:37:00

语音合成法律风险提示:声音版权与肖像权问题预警

语音合成法律风险提示:声音版权与肖像权问题预警 在智能内容生产飞速发展的今天,一段几秒钟的音频就能“复活”一个声音——这不再是科幻情节。借助如 GLM-TTS 这类基于大模型的零样本语音克隆技术,开发者可以轻松实现高保真、带情感色彩的个…

作者头像 李华