前言
很多开发者刚开始学习 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个页面时依然保持清晰稳定。
真正优秀的开发者,不是写得快,而是能够让代码在半年后依然容易维护。
架构决定项目上限,规范决定团队效率。