直接跳到内容

Core 概览

介绍

Core(框架核心层)提供与业务无关的通用能力,是整个框架的基础。这一层的代码可以直接复用到其他 HarmonyOS 项目,无需任何修改。

设计目标

  • 无业务依赖:不包含任何业务逻辑,保持框架的纯净性。
  • 可复用:可直接复制到其他项目使用。
  • 稳定:作为底层基础,接口稳定,不频繁变动。

模块组成

Core 层包含 9 个模块:

模块职责主要内容
baseViewModel 基类BaseViewModel、BaseNetWorkViewModel、BaseNetWorkListViewModel
designsystem设计系统布局常量、通用属性、基础组件封装
ibestuiUI 组件库封装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 层能力,请遵循以下原则:

  1. 不引入业务逻辑:新增内容必须是通用能力。
  2. 保持接口稳定:修改已有接口需考虑向后兼容。
  3. 完善导出:在模块的 Index.ets 中导出新增内容。

注意事项

  • Core 层的修改会影响所有上层模块,需谨慎操作。
  • 业务相关的能力应放在 Foundation 层,不要污染 Core 层。
  • 新增模块时参考现有模块的目录结构和命名规范。