

子玥酱 (掘金 / 知乎 / CSDN / 简书 同名)
大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。
我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括 前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。
技术方向: 前端 / 跨端 / 小程序 / 移动端工程化 内容平台: 掘金、知乎、CSDN、简书 创作特点: 实战导向、源码拆解、少空谈多落地 **文章状态:**长期稳定更新,大量原创输出
我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在"API 怎么用",而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。
子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源 (工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学"明白",也用"到位"
持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱
文章目录
-
- 引言
- [一、为什么鸿蒙 App 更容易"越写越乱"](#一、为什么鸿蒙 App 更容易“越写越乱”)
- 二、真正的问题:不是代码多,而是边界消失了
- 三、重构第一步:先拆"状态"
- [四、重构第二步:System 必须"去状态化"](#四、重构第二步:System 必须“去状态化”)
- 五、重构第三步:建立"唯一状态入口"
- [六、重构第四步:从"页面驱动"变成"Task 驱动"](#六、重构第四步:从“页面驱动”变成“Task 驱动”)
- 七、重构第五步:拆"领域"
- 八、重构第六步:建立"状态流"
- [九、为什么 AI 会逼着鸿蒙 App 重构](#九、为什么 AI 会逼着鸿蒙 App 重构)
- 十、真正优秀的鸿蒙项目,都有一个共同点
- 十一、一个非常重要的认知
- 十二、本质
- 结语
引言
很多人第一次写鸿蒙 App 时,都会有一种错觉:
text
ArkUI 很简单
状态驱动很舒服
开发效率非常高
于是项目初期往往推进得特别快。
但只要项目开始变大,很快就会进入一种熟悉的状态:
text
页面越来越大
状态越来越乱
System 越来越重
模块越来越耦合
最后整个项目会慢慢变成:
text
不敢改
一改就炸
很多团队最后会发现:
真正难的,从来不是"写功能"。
而是:
如何让项目长期保持清晰。
这也是为什么:
text
重构
会成为中大型鸿蒙项目绕不开的话题。
一、为什么鸿蒙 App 更容易"越写越乱"
因为鸿蒙天然具备:
- 状态驱动
- 分布式
- 多设备
- 实时同步
- AI 调度
- Task 流转
这些能力虽然强大,但也意味着:
系统复杂度会指数级上升。
一个典型项目演化过程
项目初期:
text
一个页面
几个状态
几个接口
非常简单,三个月后:
text
页面互相依赖
Store 互相调用
System 到处共享状态
半年后:
text
没人敢删代码
没人知道状态来源
最后:
text
整个项目进入"混乱熵增"
二、真正的问题:不是代码多,而是边界消失了
很多人会误以为:
text
项目乱
是因为代码量大
其实不是,真正的问题是:
边界消失。
例如:
text
UI 能改状态
System 能改状态
Service 能改状态
AI 也能改状态
最后:
text
没人知道谁是"真正的数据源"
三、重构第一步:先拆"状态"
很多鸿蒙项目最大的问题:
状态没有分层。
最危险的写法
ts
@State user: User
@State order: Order
@State products: Product[]
@State loading: boolean
页面:
text
既负责 UI
又负责业务
又负责数据
最后页面会越来越巨大。
正确做法:状态分层
推荐一个非常稳定的结构:
text
GlobalState(全局)
↓
DomainStore(业务)
↓
UIState(页面)
1、全局状态
负责:
- 用户
- 登录
- 设备
- 分布式信息
示例:
ts
globalStore.user
2、业务状态
负责:
- 订单
- 商品
- 搜索
- 消息
示例:
ts
orderStore.orders
3、页面状态
负责:
- Loading
- Dialog
- Tab
- 动画
示例:
ts
@State showDialog: boolean
这里最关键的一点:
页面不要存业务数据。
四、重构第二步:System 必须"去状态化"
很多鸿蒙项目最容易出现的问题:
text
System 越来越胖
例如:
ts
class OrderSystem {
currentOrder: Order
}
看起来很方便,但后面一定会出现:
- 状态覆盖
- 并发冲突
- 分布式同步异常
正确原则
System 只负责"处理",不负责"存储"。
正确写法:
ts
class OrderSystem {
async create(order) {
return await orderService.create(order)
}
}
System 应该是:
text
无状态能力层
而不是:
text
全局状态黑洞
五、重构第三步:建立"唯一状态入口"
很多项目会这样:
text
PageA 修改 user
PageB 修改 user
System 修改 user
结果:
text
状态来源失控
正确模型
text
一个状态
只有一个写入口
示例
ts
class UserStore {
user: User
update(user: User) {
this.user = user
}
}
外部只能:
ts
userStore.update(...)
而不是:
ts
this.user = xxx
到处乱改。
六、重构第四步:从"页面驱动"变成"Task 驱动"
传统 App:
text
页面是核心
但 AI + 鸿蒙时代:
text
任务才是核心
传统流程
text
页面
↓
按钮
↓
功能
新模型
text
Intent
↓
Task
↓
State
↓
UI
示例:
ts
await taskCenter.run("创建订单")
UI 只负责:
text
展示任务结果
七、重构第五步:拆"领域"
很多项目的问题:
text
所有模块互相调用
最后:
text
改一个功能
整个项目一起震
正确做法:领域隔离
例如:
text
user/
order/
message/
payment/
每个领域:
- Store
- System
- Repository
- Task
独立存在。
示例结构
text
order/
├── store/
├── system/
├── repository/
├── task/
└── ui/
八、重构第六步:建立"状态流"
很多鸿蒙项目的问题:
text
状态是乱流
必须建立:
统一状态流。
推荐结构
text
User Action
↓
Store
↓
System
↓
Repository
↓
Store Update
↓
UI Render
示例
UI
ts
Button("提交")
.onClick(() => {
orderStore.submit()
})
Store
ts
async submit() {
const result = await orderSystem.create()
this.order = result
}
System
ts
async create() {
return await repository.create()
}
这里:
text
UI 不直接操作数据
System 不直接持有状态
整个系统会清晰很多。
九、为什么 AI 会逼着鸿蒙 App 重构
因为 AI 会极速放大:
text
架构问题
传统 App:
text
用户一次操作
只改一个状态
AI App:
text
一次任务
可能改几十个状态
例如:
ts
await agent.run("整理今天会议")
AI 可能:
- 更新日历
- 创建待办
- 写入笔记
- 发送消息
- 修改提醒
如果架构混乱:
text
整个 App 会瞬间失控
十、真正优秀的鸿蒙项目,都有一个共同点
不是:
text
页面多漂亮
而是:
text
结构极其清晰
优秀项目通常具备:
- 状态分层
- Store 中心化
- 无状态 System
- Task 驱动
- 领域拆分
- 分布式状态隔离
这些东西:
决定项目后期是否还能继续迭代。
十一、一个非常重要的认知
很多人以为:
text
重构 = 重写
其实不是,真正的重构:
是重新建立"边界"。
比如:
原来
text
所有模块互相依赖
重构后
text
模块职责明确
状态边界明确
数据流明确
本质上:
text
重构不是"改代码"
而是"改结构"
十二、本质
如果用一句话总结:
鸿蒙 App 的混乱,本质是"边界失控"。
真正好的架构一定具备:
text
状态有边界
模块有边界
任务有边界
设备有边界
AI 有边界
一旦边界清晰:
text
整个系统会突然稳定
结语
很多鸿蒙项目后期崩掉,并不是因为:
- 功能太复杂
- AI 太难
- 分布式太重
真正的问题只有一个:
系统没有"结构秩序"。
记住一句话:
text
代码的混乱,
本质是架构边界的混乱。
当你真正完成:
- 状态分层
- Task 化
- Store 中心化
- 无状态 System
- 领域拆分
你会明显感受到:
text
项目终于"能长期维护了"