直接跳到内容

模块化设计

介绍

HarmonyKit 采用三层多模块结构,目的不是把工程拆得更复杂,而是让职责更清晰、扩展更可控。框架将核心能力、业务基础设施与业务功能分离,便于按需组合与独立演进。

模块划分原则

  • 框架能力集中在 core:基类、设计系统、导航框架、通用模型、UI 组件等基础能力在一个稳定层内维护,不包含任何业务逻辑。
  • 业务基础设施放在 foundation:业务模型、业务路由、业务状态、数据源和仓库等业务相关的基础能力在此层维护。
  • 业务功能放在 feature:页面与业务流程按模块组织,避免把业务逻辑塞进基础层。
  • 入口清晰entry 只负责应用启动与路由入口,不承载业务逻辑。

目录结构

AppScope/                   # 应用配置
entry/                      # 应用入口模块
core/                       # 框架核心层(无业务依赖)
│   ├── base/               # ViewModel 基类
│   ├── designsystem/       # 设计系统
│   ├── ibestui/            # IBest UI 组件库封装
│   ├── model/              # 通用数据模型
│   ├── navigation/         # 导航框架
│   ├── result/             # 结果封装
│   ├── state/              # 框架级状态(断点、安全区等)
│   ├── ui/                 # 通用 UI 组件
│   └── util/               # 工具类
foundation/                 # 业务基础设施层
│   ├── biz_model/          # 业务数据模型
│   ├── biz_navigation/     # 业务路由导航
│   ├── biz_state/          # 业务状态管理
│   ├── database/           # 数据库数据源
│   ├── datastore/          # 本地存储数据源
│   ├── network/            # 网络数据源
│   └── repository/         # 仓库层(聚合数据源)
feature/                    # 业务功能层
│   ├── auth/               # 认证模块
│   ├── demo/               # 示例模块
│   ├── main/               # 主模块
│   └── user/               # 用户模块

模块边界建议

core 层

  • 仅提供可复用的框架能力,不承载任何业务流程。
  • 可单独迭代演进,复用到其他项目,零外部依赖。

foundation 层

  • 提供业务相关的基础能力,是 core 与 feature 之间的桥梁。
  • 定义业务模型、业务路由、业务状态。
  • 实现数据源(网络、数据库、本地存储)和仓库。如对接后端接口、mock数据等。
  • 只依赖 core,不依赖 feature。

feature 层

  • 只依赖 foundation 和 core,不直接依赖其他业务模块。
  • 通过 repository 访问数据,不直接调用数据源。
  • 业务模块之间保持隔离,避免交叉依赖。

entry 层

  • 只聚合入口与路由,不引入具体业务实现。
  • 负责初始化和注册各模块路由。

新增模块流程

以下示例以创建 goods 模块为例,演示在 DevEco Studio 中新增模块的操作流程。

新增 feature 模块

  1. feature/ 目录上点击右键,选择 New -> Module...

创建模块入口

  1. 在模板选择界面选择 Static Library,点击 Next

选择模板

  1. 填写模块名称(如 goods)与设备类型,点击 Finish 完成创建。

配置模块信息

  1. 按照 feature 层目录规范创建 navigation/view/viewmodel/ 等目录。

  2. entry 模块中注册新模块的路由图。

新增 foundation 模块

如需新增业务基础设施模块(如新的数据源),在 foundation/ 目录下按相同流程创建。

官方参考