

子玥酱 (掘金 / 知乎 / CSDN / 简书 同名)
大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。
我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括 前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。
技术方向: 前端 / 跨端 / 小程序 / 移动端工程化 内容平台: 掘金、知乎、CSDN、简书 创作特点: 实战导向、源码拆解、少空谈多落地 **文章状态:**长期稳定更新,大量原创输出
我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在"API 怎么用",而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。
子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源 (工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学"明白",也用"到位"
持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱
文章目录
-
- 引言
- [一、鸿蒙 App 启动到底在做什么](#一、鸿蒙 App 启动到底在做什么)
- [二、真正拖慢启动速度的,不是 UI](#二、真正拖慢启动速度的,不是 UI)
- 三、第一个大坑:启动时做太多事情
- 四、第二个大坑:页面初始化过重
- 五、第三个大坑:启动时直接请求网络
- [六、第四个大坑:AI 初始化阻塞首屏](#六、第四个大坑:AI 初始化阻塞首屏)
-
- [正确做法:AI Runtime 后置](#正确做法:AI Runtime 后置)
- [七、第五个大坑:Store 初始化失控](#七、第五个大坑:Store 初始化失控)
- 八、第六个大坑:首屏组件层级太深
- 九、第七个大坑:图片资源过大
- 十、真正稳定的启动架构
- [十一、AI Native 鸿蒙 App 为什么更容易启动慢](#十一、AI Native 鸿蒙 App 为什么更容易启动慢)
- 十二、真正决定启动体验的,不是"速度"
- 十三、一个非常关键的认知
- 十四、总结
引言
很多人第一次做鸿蒙 App 时,都会有一种错觉:
text
能启动
就算完成了
但真正上线后,很快就会发现一个问题:
text
用户对"启动速度"极其敏感
尤其是:
- 电商
- 内容
- AI App
- 即时通讯
- 工具类应用
用户往往只给你:
text
1~3 秒耐心
如果:
text
打开白屏
加载卡顿
首页闪烁
很多用户会直接:
text
关闭 App
所以:
启动速度,本质上是用户的第一体验。
很多鸿蒙项目后期卡顿严重,并不是因为:
text
ArkUI 性能差
而是:
text
架构设计导致启动链路过重
一、鸿蒙 App 启动到底在做什么
很多开发者会以为:
text
点击图标
页面出现
其实中间经历了大量过程,一个完整启动流程通常包括:
text
进程创建
↓
Ability 初始化
↓
ArkUI Runtime 初始化
↓
页面树创建
↓
状态初始化
↓
网络请求
↓
资源加载
↓
首屏渲染
任何一步过重:
text
都会拖慢启动
二、真正拖慢启动速度的,不是 UI
很多人第一反应:
text
是不是页面太复杂
其实大部分情况下:
真正慢的是"初始化"。
例如:
- 启动时拉接口
- 初始化数据库
- 创建大量 Store
- 初始化 AI Runtime
- 加载大模型
- 注册大量监听器
这些东西:
text
才是真正的启动黑洞
三、第一个大坑:启动时做太多事情
很多项目:
text
一打开就全量初始化
例如:
ts
aboutToAppear() {
initUser()
initIM()
initAI()
initDB()
initCache()
initSync()
initDevice()
}
看起来很"完整",但问题是:
text
用户根本不需要立刻用到所有能力
结果:
text
首屏被全部阻塞
正确做法:分阶段初始化
推荐模型:
text
核心能力优先
非核心能力延迟
首屏阶段
只初始化:
- 用户信息
- 首页数据
- 必要状态
后台阶段
延迟初始化:
- AI Runtime
- IM
- 日志系统
- 分布式同步
示例
ts
aboutToAppear() {
loadHome()
setTimeout(() => {
initAI()
}, 0)
}
这里:
text
首屏优先渲染
体验会明显提升。
四、第二个大坑:页面初始化过重
很多页面:
text
一进入就创建大量对象
例如:
ts
@State list: Item[] = hugeData
或者:
ts
const manager = new BigManager()
问题:
text
页面创建成本极高
正确做法:懒加载
例如:
ts
if (this.visible) {
this.loadData()
}
或者:
ts
LazyForEach()
避免:
text
一次性创建大量组件
五、第三个大坑:启动时直接请求网络
很多项目会这样:
text
启动
↓
等接口
↓
再渲染
这是非常影响体验的,因为:
text
网络永远不稳定
正确方式:本地优先
推荐结构:
text
本地缓存
↓
立即渲染
↓
后台同步
例如:
ts
const cache = storage.get("home")
this.list = cache
refresh()
用户会感觉:
text
页面"秒开"
六、第四个大坑:AI 初始化阻塞首屏
很多 AI 鸿蒙 App:
text
启动直接初始化模型
例如:
ts
await aiRuntime.init()
问题:
text
模型初始化极重
尤其:
- embedding
- tokenizer
- 向量库
- Agent Runtime
都非常耗时。
正确做法:AI Runtime 后置
推荐:
text
页面先出来
AI 后加载
示例
ts
requestIdleCallback(() => {
aiRuntime.init()
})
核心:
AI 不应该阻塞首屏。
七、第五个大坑:Store 初始化失控
很多项目:
text
启动创建所有 Store
例如:
ts
new UserStore()
new OrderStore()
new MessageStore()
new AIStore()
问题:
text
很多 Store 当前根本用不到
正确方式:按需创建
例如:
ts
getOrderStore()
真正进入:
text
订单模块
再初始化。
八、第六个大坑:首屏组件层级太深
很多 ArkUI 页面:
text
组件嵌套极深
例如:
text
Column
↓
Stack
↓
Flex
↓
Column
↓
List
↓
Item
层级一多:
text
布局计算成本会暴涨
正确原则
text
能少一层
就少一层
避免:
- 过度嵌套
- 无意义容器
- 超深组件树
九、第七个大坑:图片资源过大
很多启动页:
text
直接加载超大图
例如:
- 4K Banner
- 超大 PNG
- 多层透明图
结果:
text
图片解码拖慢启动
正确做法
使用:
- WebP
- 缩略图
- 分辨率适配
避免:
text
首屏加载原图
十、真正稳定的启动架构
推荐一个非常稳定的结构:
text
Launch
↓
Core Init
↓
First Render
↓
Lazy Runtime
↓
Background Sync
启动阶段
只做:
- 用户状态恢复
- 首页缓存读取
- 首屏渲染
后台阶段
再做:
- AI Runtime
- IM
- 分布式同步
- 日志系统
- 埋点
- 分析系统
十一、AI Native 鸿蒙 App 为什么更容易启动慢
因为 AI 会带来:
- Runtime
- Agent
- Embedding
- 向量库
- Prompt System
- Memory
这些东西:
text
初始化都很重
所以未来 AI App 最重要的能力之一:
Runtime 分层加载。
推荐结构
text
Core Runtime
↓
AI Runtime
↓
Agent Runtime
↓
Distributed Runtime
按需激活。
十二、真正决定启动体验的,不是"速度"
而是:
text
用户是否感知到等待
例如,即使后台仍在加载:
text
只要首页已经可交互
用户就会感觉:
text
很流畅
所以:
"可交互时间"比"完全加载时间"更重要。
十三、一个非常关键的认知
很多开发者会觉得:
text
启动优化 = 性能优化
其实不是真正本质是:
启动链路治理。
核心问题不是:
text
哪里慢
而是:
text
哪些东西不该在启动阶段做
十四、总结
如果用一句话总结:
鸿蒙 App 启动优化,本质上是"初始化拆分"。
过去很多项目:
text
什么都启动时做
未来稳定结构一定是:
text
首屏最小化
Runtime 延迟化
能力按需化
很多鸿蒙 App 启动慢,并不是因为:
- ArkUI 不够快
- 设备性能差
- AI 太重
真正的问题其实只有一个:
启动阶段承担了太多"不该立刻执行"的东西。
记住一句话:
text
真正优秀的启动优化,
不是"让系统做更快",
而是"让系统少做一点"。
当你真正完成:
- 分阶段初始化
- Store 懒加载
- Runtime 延迟化
- 首屏缓存
- AI 后置初始化
- Task 异步化
你会明显感觉到:
text
整个鸿蒙 App 会突然"秒开"