HarmonyOS NEXT项目实战:从0到1搭建企业级项目架构

前言

很多开发者刚开始学习 HarmonyOS NEXT 时,往往关注的是页面开发、组件使用和API调用。

但真正进入企业项目后会发现:

  • 页面开发只占20%

  • 架构设计占30%

  • 工程化建设占50%

一个优秀的项目架构不仅能够提高开发效率,还能降低后期维护成本。

本文将结合实际开发经验,分享一套适用于 HarmonyOS NEXT 的企业级项目架构方案。


为什么要重视项目架构?

很多新手项目目录是这样的:

复制代码
src
├── pages
│   ├── Home
│   ├── User
│   ├── Order
│   └── Goods

开发初期没问题。

当项目达到:

  • 50+页面

  • 100+接口

  • 多人协作

就会出现:

  • 文件难找

  • 命名混乱

  • 代码重复

  • 维护困难

因此必须提前规划项目结构。


推荐项目目录

复制代码
src
│
├── pages                 页面
├── components            公共组件
├── api                   接口层
├── model                 数据模型
├── utils                 工具类
├── constants             常量
├── router                路由管理
├── hooks                 自定义Hook
├── store                 状态管理
├── services              业务服务层
├── common                公共配置
└── resources             资源文件

这样的结构能够满足大部分企业项目需求。


第一层:页面层(Pages)

职责:

  • 页面展示

  • 用户交互

  • 数据绑定

不要把业务逻辑全部写在页面中。

错误示例:

复制代码
loadData() {
  axios.get(...)
  ...
}

推荐:

复制代码
loadData() {
  userService.getUserInfo()
}

页面只负责展示。


第二层:接口层(API)

统一管理网络请求。

目录:

复制代码
api
├── userApi.ts
├── orderApi.ts
├── goodsApi.ts

示例:

复制代码
export function getUserInfo() {
  return request({
    url:'/user/info',
    method:'GET'
  })
}

优点:

  • 接口集中管理

  • 修改方便

  • 统一维护


第三层:业务层(Service)

很多项目直接:

复制代码
Page -> Api

推荐:

复制代码
Page -> Service -> Api

例如:

复制代码
class UserService {

  async getProfile() {

    const user = await getUserInfo()

    return {
      name:user.name,
      vip:user.vip
    }
  }
}

这样业务逻辑与页面彻底解耦。


第四层:公共组件

推荐建立:

复制代码
components
├── CommonButton
├── CommonDialog
├── CommonLoading
├── CommonCard
├── EmptyView

原则:

出现两次以上就考虑抽组件。

不要复制粘贴。


第五层:工具类封装

目录:

复制代码
utils

常见工具:

复制代码
DateUtil

StorageUtil

PermissionUtil

ToastUtil

LogUtil

EncryptUtil

例如:

复制代码
ToastUtil.show("保存成功")

比直接调用系统API更方便。


路由统一管理

不要满项目写:

复制代码
router.pushUrl(...)

建立:

复制代码
export const RouterPath = {
  HOME:'pages/Home',
  USER:'pages/User',
  ORDER:'pages/Order'
}

跳转:

复制代码
router.pushUrl({
  url:RouterPath.USER
})

优点:

  • 防止写错路径

  • 支持统一维护


网络请求统一封装

企业项目必做。

创建:

复制代码
network
├── request.ts
├── interceptor.ts

统一处理:

  • Token

  • 请求头

  • 错误码

  • 登录失效

  • Loading

页面无需重复编写。


状态管理方案

小型项目:

复制代码
@State

中型项目:

复制代码
@Provide
@Consume

大型项目:

复制代码
Store

管理:

  • 用户信息

  • 登录状态

  • 主题配置

  • 全局设置

避免层层传参。


企业项目开发规范

命名规范

组件:

复制代码
UserCard
GoodsItem
OrderList

变量:

复制代码
userInfo
goodsList
orderCount

常量:

复制代码
const MAX_COUNT = 100

统一风格非常重要。


性能优化建议

List使用LazyForEach

复制代码
LazyForEach(...)

避免一次性渲染大量数据。


图片懒加载

不要全部本地资源。

推荐:

复制代码
OSS

CDN

对象存储

降低安装包体积。


页面退出释放资源

复制代码
aboutToDisappear() {

}

及时释放:

  • 定时器

  • Web组件

  • 视频播放器

防止内存泄漏。


多人协作经验

建议制定:

  • Git提交规范

  • 分支管理规范

  • 接口文档规范

  • 代码Review制度

例如:

复制代码
feature/login

feature/order

feature/user

避免多人开发冲突。


总结

很多开发者认为:

"项目能跑就行。"

但企业开发更关注:

  • 可维护性

  • 可扩展性

  • 团队协作效率

一个好的 HarmonyOS NEXT 项目架构,能够让项目从10个页面扩展到100个页面时依然保持清晰稳定。

真正优秀的开发者,不是写得快,而是能够让代码在半年后依然容易维护。

架构决定项目上限,规范决定团队效率。