01-three-layer-architecture

01 --- HarmonyOS 多设备短视频应用的三层架构设计与实践

一、引言

在多设备应用开发中,如何高效组织代码、实现业务复用是核心挑战。本系列基于 多设备短视频(Multi-Short-Video) 项目,该系统覆盖手表、直板机、折叠屏、平板、电脑和智慧屏六种设备形态,采用 HarmonyOS 三层架构进行代码组织。

二、三层架构概览

项目采用 products → features → common 的依赖关系,自顶向下引用:

复制代码
┌──────────────────────────────────────────────────┐
│ products 层(产品定制层)                          │
│ default(手机/平板) │ pc(电脑) │ tv(智慧屏) │ wearable(手表) │
├──────────────────────────────────────────────────┤
│ features 层(基础特性层)                          │
│ multishortvideoadaptivevideo(视频播放)            │
│ multishortvideocomment(评论区)                    │
│ multishortvideoindividual(个人作品页)              │
├──────────────────────────────────────────────────┤
│ common 层(公共能力层)                            │
│ multishortvideobase(公共组件/常量/工具类/数据模型)  │
└──────────────────────────────────────────────────┘

2.1 common 层 --- 公共能力层

定义在 common/multishortvideobase 模块中,提供:

  • 公共组件MSVTabsMSVTextIconMSVEmptyComponent
  • 常量定义CommonConstants(AVPlayer 状态常量、百分比常量等)
  • 数据模型MSVDataModel(Tabs 数据模型)
  • 工具类WindowUtil(窗口管理)、Logger(日志)、WidthBreakpointType(断点工具)、AdaptiveImmersion(沉浸式算法)

2.2 features 层 --- 基础特性层

三个独立业务模块,被 products 层统一调用:

模块 功能 关键文件
multishortvideoadaptivevideo 视频播放 AdaptiveAVPlayer.ets, AdaptiveVideo.ets
multishortvideocomment 评论区 Comment.ets, CommentViewModel.ets
multishortvideoindividual 个人作品页 Individual.ets, Works.ets, IndividualByRouter.ets

2.3 products 层 --- 产品定制层

四个 HAP 包作为独立入口,各自处理设备特有的 UI 差异:

HAP 设备 入口文件 导航模式
default 手机、平板 products/default/.../Index.ets MSVTabs + Navigation
pc 电脑 products/pc/.../Index.ets SideBarContainer
tv 智慧屏 products/tv/.../Index.ets TVTabs + Navigation
wearable 手表 products/wearable/.../Index.ets MSVTabs(精简版)

三、模块依赖配置

build-profile.json5 中定义 8 个模块,通过 srcPath 映射到各层目录:

json5 复制代码
{
  modules: [
    { name: "multishortvideodefaultsample", srcPath: "./products/default" },
    { name: "multishortvideopcsample",      srcPath: "./products/pc" },
    { name: "multishortvideotvsample",      srcPath: "./products/tv" },
    { name: "multishortvideowearablesample", srcPath: "./products/wearable" },
    { name: "multishortvideobase",           srcPath: "./common/multishortvideobase" },
    { name: "multishortvideoadaptivevideo",  srcPath: "./features/multishortvideoadaptivevideo" },
    { name: "multishortvideoindividual",     srcPath: "./features/multishortvideoindividual" },
    { name: "multishortvideocomment",        srcPath: "./features/multishortvideocomment" },
  ]
}

各模块的 oh-package.json5 中声明依赖,如 features 层依赖 common 层,products 层依赖 features 层。

四、最佳实践总结

  1. 按层次拆分模块:common 层放通用工具,features 层放业务逻辑,products 层放设备差异化代码
  2. 单向依赖:products → features → common,禁止反向依赖
  3. 模块粒度控制:每个 HAP 包独立编译,避免不必要的依赖膨胀
  4. 统一数据模型:公共数据模型集中在 common 层,避免跨模块重复定义
相关推荐
贾伟康5 小时前
【时光清单|14】HarmonyOS ArkTS 主导航实战:统一页面入口、返回路径和参数校验
harmonyos·arkts·arkui·navigation·路由管理
贾伟康10 小时前
【时光清单|05】HarmonyOS ArkTS 倒计时卡片实战:适配 2x2、2x4 与 4x4 多尺寸
harmonyos·arkts·arkui·服务卡片·formextensionability
小雨青年10 小时前
【HarmonyOS 7 悬浮页签深度实战】07 折叠屏、平板与宽窗口的布局适配
华为·harmonyos
熊猫钓鱼>_>12 小时前
鸿蒙AI Agent新范式:从“对话式辅助”到“工程化代理”的Harness架构实战解析
人工智能·笔记·学习·华为·架构·harmonyos
大锅盖112 小时前
HarmonyOS ArkUI 非遗纹样素材平台设计复盘:朱砂宣纸与鎏金黛蓝的文化守护
华为·harmonyos
2501_9197490313 小时前
华为鸿蒙管理学习生活与工作APP—小羊管理
学习·华为·生活·harmonyos·鸿蒙
贾伟康13 小时前
【时光清单|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
harmonyos·arkts·agc·appgallery·发布复查
lilian23314 小时前
HarmonyOS 7 新特性(二十三)|hiprofiler + hidumper:跨堆内存分析
华为·harmonyos
嵌入之梦15 小时前
鸿蒙OS IoT设备开发之基础 —— 外设驱动
物联网·华为·harmonyos
贾伟康15 小时前
【时光清单|12】HarmonyOS ArkTS 单页复杂状态实战:拆分 Index 中的导航、弹层和编辑草稿
harmonyos·arkts·状态管理·arkui·navigation