
网罗开发 (小红书、快手、视频号同名)
大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG
我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验 。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。
展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索"展菲",即可纵览我在各大平台的知识足迹。
每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
文章目录
-
- 引言
- 一、什么是"增量构建"
- 二、为什么鸿蒙项目特别容易"编译爆炸"
- 三、真正的问题:依赖边界失控
- 四、鸿蒙增量构建最核心的原则
- 五、为什么"大一统工程"一定会越来越慢
- 六、真正稳定的鸿蒙模块结构
-
- [修改订单 UI](#修改订单 UI)
- 修改支付逻辑
- 七、为什么"状态中心化"会影响构建速度
-
- [正确方式:领域 Store](#正确方式:领域 Store)
- 八、为什么"公共工具库"最容易毁掉增量构建
- [九、ArkUI 为什么特别依赖"组件隔离"](#九、ArkUI 为什么特别依赖“组件隔离”)
- 十、真正影响增量构建的,其实是"依赖方向"
- [十一、AI 为什么会进一步放大构建问题](#十一、AI 为什么会进一步放大构建问题)
- 十二、真正成熟的鸿蒙项目,会建立"分层构建"
-
- [UI 层](#UI 层)
- [Store 层](#Store 层)
- [Runtime 层](#Runtime 层)
- 最终形成:
- [十三、为什么"Task 化"会天然提升增量构建](#十三、为什么“Task 化”会天然提升增量构建)
- [十四、为什么"无状态 System"也能提升构建效率](#十四、为什么“无状态 System”也能提升构建效率)
- 十五、真正优秀的鸿蒙项目,都有一个共同点
- 十六、总结
引言
很多团队第一次做鸿蒙大型项目时,都会遇到一个非常痛苦的问题:
text
编译越来越慢
刚开始:
text
点一下 Run
几秒钟启动
项目变大后:
text
改一行代码
重新编译几十秒
甚至:
text
一次构建几分钟
最后整个开发体验会变成:
text
写代码五分钟
等编译十分钟
很多人会以为:
这是鸿蒙工具链的问题。
其实不是,真正的问题通常是:
项目没有建立"增量构建架构"。
因为随着:
- 模块越来越多
- 状态越来越复杂
- AI 能力接入
- 多端适配
- 分布式能力增强
如果整个项目仍然:
text
全量编译
开发效率一定会越来越差,所以:
中大型鸿蒙项目,最终一定会走向"增量构建"。
一、什么是"增量构建"
一句话解释:
只重新构建"发生变化"的部分。
错误方式(全量构建)
text
改一个页面
整个项目重新编译
正确方式(增量构建)
text
改订单模块
只编译订单模块
核心目标
不是:
text
让编译更快
而是:
text
减少"不必要的构建"
二、为什么鸿蒙项目特别容易"编译爆炸"
因为很多项目天然会这样写:
text
所有模块互相引用
例如:
text
Page 引用 Store
Store 引用 System
System 引用 UI
最后:
text
形成巨大依赖网
一旦:
text
一个文件变化
整个项目:
text
全部失效重编译
这就是很多项目:
text
后期编译越来越慢
真正原因。
三、真正的问题:依赖边界失控
很多团队会觉得:
text
代码多 = 编译慢
其实不是,真正的问题是:
模块之间没有边界。
错误结构
text
任何模块都能互相 import
最后:
text
依赖树无限扩散
正确结构
text
领域隔离
模块独立
例如:
text
user/
order/
payment/
message/
每个领域:
- 独立 Store
- 独立 System
- 独立 Repository
这样:
text
改单模块
不会影响全局
四、鸿蒙增量构建最核心的原则
原则模块化,这是最重要的一步,推荐结构:
text
feature/
├── user
├── order
├── payment
└── message
每个 feature:
text
独立编译
不要:
text
所有代码放一起
五、为什么"大一统工程"一定会越来越慢
很多项目早期喜欢:
text
一个工程写全部
例如:
text
pages/
utils/
api/
components/
看起来简单,但后面:
text
模块越来越耦合
最终:
text
任何改动都会触发全量构建
这是大型鸿蒙项目最典型的问题。
六、真正稳定的鸿蒙模块结构
推荐:
text
feature-order
feature-user
feature-payment
feature-message
每个 feature:
text
独立边界
内部:
text
ui/
store/
task/
system/
repository/
修改订单 UI
只影响:
text
feature-order
修改支付逻辑
只影响:
text
feature-payment
七、为什么"状态中心化"会影响构建速度
很多项目:
text
一个 GlobalStore 管所有状态
例如:
ts
class GlobalStore {
user
order
payment
message
}
问题:
text
任何状态变化
都会影响整个依赖树
最终:
text
增量构建彻底失效
正确方式:领域 Store
例如:
text
userStore
orderStore
paymentStore
每个领域:
text
独立状态源
这样:
text
改单领域
不会波及全局
八、为什么"公共工具库"最容易毁掉增量构建
很多团队喜欢:
text
utils/
然后:
text
所有模块都依赖它
问题:
text
改一个工具函数
全项目重新编译
这是非常典型的问题。
正确做法
拆:
text
utils-time
utils-network
utils-format
避免:
text
超级公共库
因为:
公共依赖越大,增量能力越差。
九、ArkUI 为什么特别依赖"组件隔离"
很多页面会这样:
ts
@Builder
buildAll() {
}
最后:
text
一个页面几千行
问题:
text
任何 UI 改动
整个页面重新分析
正确做法:
组件拆分:
text
OrderHeader
OrderList
OrderFooter
每个组件:
text
独立更新
独立编译
十、真正影响增量构建的,其实是"依赖方向"
错误结构:
text
UI 引用 System
System 又反向引用 UI
这种:
text
循环依赖
会导致:
text
整个依赖图失控
正确结构一定是单向依赖
推荐:
text
UI
↓
Store
↓
Task
↓
System
↓
Repository
核心:
text
绝不反向依赖
十一、AI 为什么会进一步放大构建问题
因为 AI Native 项目,通常:
text
模块更多
Task 更多
Runtime 更多
例如:
- Agent Runtime
- Prompt Engine
- Memory Store
- Task Scheduler
- Tool Runtime
如果没有:
text
模块隔离
后果:
text
一次改动
全项目重编译
开发效率会瞬间崩掉。
十二、真正成熟的鸿蒙项目,会建立"分层构建"
UI 层
变化最频繁:
text
高频增量
Store 层
中频变化:
text
领域增量
Runtime 层
低频变化:
text
稳定核心层
最终形成:
text
稳定核心
+
高频业务层
这才是:
真正适合长期演进的结构。
十三、为什么"Task 化"会天然提升增量构建
传统:
text
页面直接写流程
导致:
text
流程和 UI 强耦合
Task 架构:
text
流程独立
例如:
ts
taskCenter.run("创建订单")
页面只负责:
text
展示状态
这样:
text
Task 改动
不会影响 UI 编译
十四、为什么"无状态 System"也能提升构建效率
很多项目:
text
System 持有大量状态
结果:
text
依赖不断扩散
正确:
text
System 无状态化
例如:
ts
class OrderSystem {
async create() {}
}
这样:
text
System 会非常稳定
构建缓存命中率会更高。
十五、真正优秀的鸿蒙项目,都有一个共同点
不是:
text
机器配置多高
而是:
text
依赖结构极其清晰
通常具备:
- Feature 模块化
- Store 分层
- Task 解耦
- 无状态 System
- 单向依赖
- Runtime 稳定层
这些东西:
决定了项目后期还能不能继续快速迭代。
十六、总结
如果用一句话总结:
增量构建,本质上是在"控制依赖扩散"。
很多项目编译慢,并不是因为:
text
代码太多
真正问题是:
text
所有东西都互相依赖
过去:
text
一个 App
像一团代码
未来:
text
一个 App
像多个独立运行的小系统
只有这样:
text
增量构建才真正成立
很多鸿蒙项目后期开发效率越来越低,并不是因为:
- ArkUI 太复杂
- AI 太重
- 分布式太难
真正的问题其实只有一个:
架构没有"构建边界"。
记住一句话:
text
真正优秀的鸿蒙工程,
一定是:
代码可拆分,
依赖可隔离,
构建可增量。
当你真正完成:
- Feature 化
- Store 分层
- Task 解耦
- Runtime 稳定化
- 单向依赖
- 无状态 System
你会明显感觉到:
text
整个鸿蒙项目的开发速度
突然快了很多