这是拿来抽奖用的文章,为copy的https://juejin.cn/post/7539857687720804415

一、鸿蒙自学规划与准备

1.1 学习前的自我评估

在开始鸿蒙学习前,建议先评估自己的技术基础,以便制定合适的学习计划:

必备基础

  • 基本编程概念(变量、函数、循环等)
  • 面向对象思想(类、对象、继承等)
  • 简单的前端知识(HTML/CSS 基础,有助于理解 ArkUI)

技能自测

  • 能否用 Java 或 JavaScript 写出简单的计算器程序?
  • 是否了解 JSON 数据格式和基本网络请求概念?
  • 有没有 UI 界面开发经验?

学习心态

  • 耐心:鸿蒙开发涉及新概念,需要循序渐进
  • 动手:每周至少 20 小时实际编码练习
  • 坚持:遇到问题不要轻易放弃,社区和文档是你的好帮手

1.2 高效学习时间规划

根据学习目标不同,推荐两种时间规划方案:

方案一:业余学习(每天 2-3 小时)

  • 周一至周五:每天学习一个核心知识点,周末进行项目实践
  • 第一周:开发环境搭建 + ArkTS 基础语法
  • 第二周:ArkUI 组件与布局
  • 第三周:状态管理与页面路由
  • 第四周:综合项目实战

方案二:集中学习(每天 6-8 小时)

  • 前 3 天:基础语法与开发环境
  • 4-7 天:UI 开发与状态管理
  • 8-10 天:分布式能力与数据存储
  • 11-15 天:完整项目开发与优化

学习节奏建议

  • 每学习 45 分钟休息 10 分钟
  • 每周安排半天复习时间,整理笔记和错题
  • 每月完成一个阶段性项目,检验学习成果

二、核心知识笔记整理

2.1 鸿蒙开发核心概念图解

鸿蒙系统架构

1
2
3
4
5
6
7
8
9
 体验AI代码助手 代码解读复制代码┌─────────────────────────────────┐
│ 应用层 │ 系统应用、第三方应用、元服务 │
├─────────────────────────────────┤
│ 框架层 │ ArkUI、ArkTS、分布式应用框架 │
├─────────────────────────────────┤
│ 系统服务层 │ 分布式软总线、数据管理、任务调度 │
├─────────────────────────────────┤
│ 内核层 │ LiteOS/Linux内核、驱动框架 │
└─────────────────────────────────┘

南向开发 vs 北向开发

维度 南向开发 北向开发
开发目标 硬件驱动、内核优化 应用开发、用户界面
技术栈 C/C++、驱动框架 HDF ArkTS、ArkUI、JavaScript
工具 DevEco Device Tool DevEco Studio
应用场景 智能硬件、物联网设备 手机应用、跨设备应用

2.2 关键技术难点解析

状态管理装饰器对比

  • @State:组件内部状态,修改会触发 UI 刷新
  • @Prop:父子组件单向数据传递
  • @Link:父子组件双向数据绑定
  • @Provide/@Consume:跨组件层级数据共享

使用原则

  • 局部状态用@State
  • 父子通信优先用@Prop+ 事件回调
  • 深层嵌套组件通信才用@Provide/@Consume
  • 全局状态考虑用AppStorage

分布式能力核心

  1. 软总线:设备发现与通信通道
  2. 分布式数据:跨设备数据同步
  3. 任务调度:多设备协同完成任务

实现步骤

1
2
3
4
markdown 体验AI代码助手 代码解读复制代码1. 设备发现:DeviceManager.discoverDevices()
2. 设备认证:建立安全连接
3. 能力发布:将本地服务发布到其他设备
4. 远程调用:通过RPC调用其他设备服务

2.3 易混淆知识点辨析

Stage 模型 vsFA 模型

  • Stage 模型(推荐):
    • 单进程多 Ability
    • 支持 Ability 内多页面
    • 内存占用更低,性能更好
  • FA 模型(旧版):
    • 多进程架构
    • 每个 Page 单独进程
    • 适合简单应用

开发选择:新项目优先使用 Stage 模型,旧项目可逐步迁移

ArkTS 与 TypeScript

  • 相同点:基础语法一致,支持 TypeScript 大部分特性
  • 差异点:
    • ArkTS 增加状态管理装饰器
    • 支持声明式 UI 语法
    • 提供更严格的静态检查

三、高效笔记整理方法

3.1 结构化笔记模板

推荐模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
markdown 体验AI代码助手 代码解读复制代码# 【主题】鸿蒙状态管理

## 1. 概念理解
- 核心思想:数据驱动UI
- 适用场景:...

## 2. 关键知识点
- @State装饰器
- 作用:组件内部状态管理
- 示例:...
- @Prop装饰器
- 作用:父子组件数据传递
- 注意事项:...

## 3. 实践案例
- 计数器实现
- 代码思路:...
- 效果展示:...

## 4. 常见问题
- Q: 状态更新后UI不刷新?
- A: 检查是否用新对象替换数组/对象

## 5. 参考资料
- 官方文档链接
- 相关案例链接

使用技巧

  • 每个知识点单独成页,便于后续整理
  • 使用 #标签分类,如 #状态管理、# 布局组件
  • 重要内容用**加粗,重点突出

3.2 思维导图学习法

核心知识脑图结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 体验AI代码助手 代码解读复制代码鸿蒙开发
├─ 开发环境
│ ├─ DevEco Studio安装
│ ├─ 模拟器配置
│ └─ 真机调试
├─ 核心技术
│ ├─ ArkTS语法
│ ├─ ArkUI组件
│ └─ 状态管理
├─ 分布式能力
│ ├─ 设备发现
│ ├─ 数据同步
│ └─ 任务调度
└─ 项目实战
├─ 待办应用
├─ 天气应用
└─ 智能家居控制

推荐工具:XMind、MindNode、FreeMind

使用建议

  • 每周学习结束后绘制知识脑图,检验知识体系完整性
  • 用不同颜色区分已掌握和待巩固知识点
  • 定期更新脑图,添加新学到的内容

3.3 错题集与问题跟踪

错题集格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
perl 体验AI代码助手 代码解读复制代码## 问题描述
使用@Link装饰器时出现编译错误,提示"Property 'xxx' does not exist"

## 错误代码
@Component
struct ChildComponent {
@Link count: number

build() {
Button('+')
.onClick(() => {
this.count++
})
}
}

## 错误原因
父组件传递参数时使用了错误的属性名,与子组件@Link变量名不一致

## 正确代码
// 父组件
ChildComponent({ count: $parentCount })

## 知识点总结
@Link变量名必须与父组件传递的参数名完全一致,区分大小写

问题跟踪表

日期 问题描述 解决方法 相关知识点
2025.3.15 模拟器启动失败 开启 BIOS 虚拟化支持 开发环境配置
2025.3.18 状态变量未触发 UI 更新 创建新数组替换原数组 @State 装饰器
2025.3.22 分布式数据同步失败 添加分布式权限并申请授权 分布式能力

四、学习资源精选推荐

4.1 官方资源(首选)

文档与教程

b23.tv/xevakl1

  • 《HarmonyOS 应用开发白皮书》:生态全景介绍
  • [HarmonyOS 第一课]:视频课程

代码示例

  • HarmonyOS Samples:官方示例代码库
  • Codelabs:交互式编程练习

4.2 第三方优质资源

视频课程

b23.tv/xevakl1

社区与博客

b23.tv/xevakl1

  • 鸿蒙开发者社区:经验分享与问题解答
  • 掘金:鸿蒙开发专栏
  • 知乎:鸿蒙技术话题讨论

书籍推荐

  • 《鸿蒙应用开发实战》:适合入门
  • 《ArkTS 语言开发详解》:深入语言特性
  • 《鸿蒙分布式应用开发》:特色能力详解

4.3 学习资源使用策略

资源筛选原则

  • 优先选择官方资源和最新内容(2024 年后)
  • 视频课程与文档结合学习,视频学操作,文档学原理
  • 每个知识点至少参考两个不同来源的资料

资源管理方法

  • 使用 Notion 建立资源库,分类整理优质链接
  • 收藏重要网页时立即添加简短笔记,记录推荐理由
  • 定期清理过期资源,保持资源库时效性

五、实战项目笔记范例

5.1 项目规划与需求分析

待办事项应用规划

  • 核心功能:添加 / 删除 / 修改待办、标记完成状态、数据持久化
  • 技术点
    • ArkUI 布局(List、Button、TextInput)
    • 状态管理(@State、@Prop)
    • 数据存储(Preferences)
    • 页面路由(router 模块)

项目结构

1
2
3
4
5
6
7
8
less 体验AI代码助手 代码解读复制代码entry/src/main/ets/
├── pages/
│ ├── TodoList.ets // 待办列表页
│ └── TodoDetail.ets // 待办详情页
├── components/
│ └── TodoItem.ets // 待办项组件
└── models/
└── TodoModel.ets // 数据模型

5.2 开发过程中的问题与解决方案

问题 1:长列表滑动卡顿

  • 现象:待办项超过 20 条时滑动不流畅
  • 原因:使用 ForEach 渲染所有列表项,未做懒加载
  • 解决方案:改用 LazyForEach 实现列表项懒加载
1
2
3
4
5
6
7
8
9
10
11
12
13
scss 体验AI代码助手 代码解读复制代码// 优化前
List() {
ForEach(this.todos, (item) => {
ListItem() { TodoItem({ todo: item }) }
})
}

// 优化后
List() {
LazyForEach(this.todoDataSource, (item) => {
ListItem() { TodoItem({ todo: item }) }
})
}

问题 2:数据持久化失败

  • 现象:应用重启后数据丢失
  • 原因:Preferences 未正确调用 flush () 方法
  • 解决方案
1
2
3
4
5
6
7
8
9
javascript 体验AI代码助手 代码解读复制代码// 保存数据
async saveTodos() {
try {
await this.preferences.put('todos', JSON.stringify(this.todos));
await this.preferences.flush(); // 确保数据写入磁盘
} catch (e) {
console.error('保存失败', e);
}
}

5.3 项目总结与经验提炼

开发心得

  1. 组件化思想:将 UI 拆分为小组件,提高复用性
  2. 状态管理:合理规划状态作用域,避免状态混乱
  3. 错误处理:所有异步操作必须添加 try-catch
  4. 性能优化:列表使用 LazyForEach,图片使用缓存

待优化点

  • 添加待办分类功能
  • 实现待办搜索
  • 添加数据备份与恢复
  • 支持待办优先级设置

六、学习工具与效率提升

6.1 笔记软件推荐

Notion

  • 优势:支持 Markdown、数据库功能、多设备同步
  • 适用场景:知识体系构建、学习计划管理
  • 模板推荐:学习笔记模板、项目管理看板

Obsidian

  • 优势:本地存储、双向链接、知识图谱
  • 适用场景:构建个人知识库、深度笔记整理
  • 插件推荐:思维导图、标签管理、图表生成

OneNote

  • 优势:自由排版、手写笔记支持、Office 集成
  • 适用场景:课堂笔记、会议记录
  • 使用技巧:利用分区功能组织不同学习阶段内容

6.2 开发效率工具

DevEco Studio 插件

  • CodeGenie:AI 辅助编程,生成代码和注释
  • HarmonyOS Theme:主题美化,减少视觉疲劳
  • ArkTS Code Snippets:代码片段,快速插入常用代码

效率提升工具

  • HDC 命令行工具:设备调试和日志查看
  • Ohpm 包管理器:鸿蒙第三方库管理
  • 鸿蒙模拟器:多设备同时调试

6.3 社区与学习伙伴

推荐社区

b23.tv/xevakl1

七、自学常见问题与解决方法

7.1 技术难点突破

问题:声明式 UI 思维转变困难

  • 表现:习惯了命令式编程,难以适应声明式 UI
  • 解决方法
    1. 先画 UI 草图,再用声明式语法描述
    2. 从简单页面开始,逐步复杂
    3. 分析官方示例,模仿写法

问题:分布式能力理解困难

  • 解决方法
    1. 用生活例子类比:把设备看作团队成员,软总线看作沟通工具
    2. 从简单设备发现开始,逐步尝试数据共享
    3. 参考官方 Codelabs 分布式案例

7.2 学习动力维持

动力不足的解决策略

  • 目标分解:将 “学会鸿蒙开发” 分解为小目标,如 “本周实现登录功能”
  • 进度可视化:使用 GitHub 贡献图记录每日学习时间
  • 成果展示:定期将项目部署到真机,体验成就感
  • 社区激励:在技术社区分享学习心得,获得反馈和鼓励

避免 burnout

  • 设定合理学习时间,不要熬夜编程
  • 每周安排一天完全休息,避免疲劳积累
  • 参与线下技术 meetup,结交同好

7.3 学习效率提升

番茄工作法应用

  • 25 分钟专注学习 + 5 分钟休息
  • 每完成 4 个番茄钟,休息 15-20 分钟
  • 使用 Forest 等 APP 记录专注时间

知识巩固方法

  • 学习后 24 小时内复习一次
  • 用自己的话重述知识点
  • 给他人讲解学到的内容
  • 制作思维导图,梳理知识体系

结语:我的鸿蒙自学心得

经过三个月的自学,我从零基础成长为能够独立开发简单鸿蒙应用的开发者。回首这段学习历程,最深的体会是:坚持比天赋更重要。鸿蒙开发涉及不少新概念,但只要按照合理的学习路径,每天积累一点,终能掌握。

作者:用户100810713938
链接:https://juejin.cn/post/7539857687720804415
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。