Core 概览
介绍
Core(框架核心层)提供与业务无关的通用能力,是整个框架的基础。这一层的代码可以直接复用到其他 HarmonyOS 项目,无需任何修改。
设计目标
- 无业务依赖:不包含任何业务逻辑,保持框架的纯净性。
- 可复用:可直接复制到其他项目使用。
- 稳定:作为底层基础,接口稳定,不频繁变动。
模块组成
Core 层包含 9 个模块:
| 模块 | 职责 | 主要内容 |
|---|---|---|
| base | ViewModel 基类 | BaseViewModel、BaseNetWorkViewModel、BaseNetWorkListViewModel |
| designsystem | 设计系统 | 布局常量、通用属性、基础组件封装 |
| ibestui | UI 组件库封装 | IBest-UI-V2 的封装与适配 |
| model | 通用数据模型 | NetworkResponse、NetworkPageData、Id、Ids |
| navigation | 导航框架 | RouteBuild、RouteGraph、NavigationService |
| result | 结果封装 | RequestHelper |
| state | 框架级状态 | BreakpointState、WindowSafeAreaState |
| ui | 通用 UI 组件 | AppNavDestination、BaseNetWorkView、Empty 等 |
| util | 工具类 | PreferencesUtil、ContextUtil、ToastUtils 等 |
与其他层的关系
feature/*
↓ 依赖
foundation/*
↓ 依赖
core/* ← 不依赖任何上层模块- Core 不依赖 Foundation 或 Feature:保持底层的独立性。
- Foundation 依赖 Core:使用 Core 提供的基础能力。
- Feature 依赖 Core:使用 Core 的基类、UI 组件等。
使用示例
使用 ViewModel 基类
ts
import { BaseViewModel } from "@core/base";
@ObservedV2
export default class MyViewModel extends BaseViewModel {
// 继承加载状态管理等基础能力
}使用通用数据模型
ts
import { NetworkResponse, NetworkPageData } from "@core/model";
async function fetchData(): Promise<NetworkResponse<NetworkPageData<Item>>> {
// 使用统一的响应格式
}使用导航框架
ts
import { RouteBuild, RouteGraph } from "@core/navigation";
export class MyGraph implements RouteGraph {
register(): void {
RouteBuild.register("my/page", wrapBuilder(MyPageNav));
}
}使用框架状态
ts
import { bp, getBreakpointState } from "@core/state";
// 响应式布局
Column() {
// ...
}
.padding(bp(16, 24, 32))扩展 Core 层
如需扩展 Core 层能力,请遵循以下原则:
- 不引入业务逻辑:新增内容必须是通用能力。
- 保持接口稳定:修改已有接口需考虑向后兼容。
- 完善导出:在模块的
Index.ets中导出新增内容。
注意事项
- Core 层的修改会影响所有上层模块,需谨慎操作。
- 业务相关的能力应放在 Foundation 层,不要污染 Core 层。
- 新增模块时参考现有模块的目录结构和命名规范。