学习计划
This commit is contained in:
commit
cf27076fec
|
|
@ -0,0 +1,636 @@
|
||||||
|
# 🦀 Rust + Tauri 学习打卡表
|
||||||
|
|
||||||
|
> **学习者**:Java全栈工程师
|
||||||
|
> **开始日期**:_________
|
||||||
|
> **预计周期**:12周
|
||||||
|
> **每周目标投入**:8-12小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 总进度看板
|
||||||
|
|
||||||
|
| 阶段 | 周数 | 主题 | 进度 |
|
||||||
|
|:---|:---|:---|:---:|
|
||||||
|
| 第一阶段 | 第1-4周 | Rust 基础 | ⬜⬜⬜⬜ |
|
||||||
|
| 第二阶段 | 第5-7周 | Rust 进阶 | ⬜⬜⬜ |
|
||||||
|
| 第三阶段 | 第8-10周 | Tauri 框架 | ⬜⬜⬜ |
|
||||||
|
| 第四阶段 | 第11-12周 | 综合实战 | ⬜⬜ |
|
||||||
|
|
||||||
|
**总体完成度**:____ / 12 周
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📘 第一阶段:Rust 语言基础
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔷 第1周:语法入门
|
||||||
|
|
||||||
|
**核心目标**:理解Rust基本语法,建立从Java到Rust的思维映射
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 搭建开发环境(安装Rust、VS Code、rust-analyzer) | 1h | ⬜ | ___/___ |
|
||||||
|
| 2 | 阅读《Rust程序设计语言》第1-3章(变量、类型、函数) | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 学习所有权系统初探(第4章前半部分) | 2h | ⬜ | ___/___ |
|
||||||
|
| 4 | 完成 Rustlings 练习 `variables` + `functions` + `if` | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 5 | 编写命令行计算器(加减乘除) | 2h | ⬜ | ___/___ |
|
||||||
|
| 6 | 周复习 + 整理笔记(Java vs Rust 语法对比表) | 2h | ⬜ | ___/___ |
|
||||||
|
| 7 | 查漏补缺 / 休息日 | - | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
|
||||||
|
- ⬜ 开发环境正常运行 (`rustc --version` 能输出)
|
||||||
|
- ⬜ Rustlings 完成:`variables`, `functions`, `if`, `move_semantics`
|
||||||
|
- ⬜ 命令行计算器代码提交到Git
|
||||||
|
|
||||||
|
**自我评估**:
|
||||||
|
- 理解难度:⭐⭐⭐⭐⭐(1-5,5最难)
|
||||||
|
- 学习满意度:⭐⭐⭐⭐⭐(1-5)
|
||||||
|
- 最大困惑点:_________________________
|
||||||
|
- 笔记链接/路径:_________________________
|
||||||
|
|
||||||
|
**本周实际用时**:____ 小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔷 第2周:所有权与借用(Rust的灵魂)
|
||||||
|
|
||||||
|
**核心目标**:彻底理解所有权、借用、引用三大规则
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 精读《Rust程序设计语言》第4章(所有权全部) | 2.5h | ⬜ | ___/___ |
|
||||||
|
| 2 | 理解借用(Borrowing)与引用(References) | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 完成 Rustlings `move_semantics` + `primitive_types` | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 4 | 学习 `Copy` vs `Clone` trait 的区别 | 1h | ⬜ | ___/___ |
|
||||||
|
| 5 | 编写练习:实现字符串拼接函数(处理所有权转移) | 2h | ⬜ | ___/___ |
|
||||||
|
| 6 | 阅读一篇所有权相关的博客/视频,加深理解 | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 7 | 周复习 + 整理所有权思维导图 | 2h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ Rustlings 完成:`move_semantics`, `primitive_types`, `structs`
|
||||||
|
- ⬜ 完成5个所有权相关的代码练习(手写)
|
||||||
|
- ⬜ 所有权思维导图/笔记
|
||||||
|
|
||||||
|
**关键检查点**(能向他人解释清楚):
|
||||||
|
- ⬜ 什么是所有权转移(Move)?
|
||||||
|
- ⬜ 什么是借用(Borrowing)?可变借用 vs 不可变借用?
|
||||||
|
- ⬜ 悬垂引用(Dangling Reference)Rust如何防止?
|
||||||
|
- ⬜ `String` vs `&str` 的区别?
|
||||||
|
|
||||||
|
**自我评估**:
|
||||||
|
- 理解难度:⭐⭐⭐⭐⭐
|
||||||
|
- 学习满意度:⭐⭐⭐⭐⭐
|
||||||
|
- 最大困惑点:_________________________
|
||||||
|
- 本周实际用时:____ 小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔷 第3周:结构体、枚举与模式匹配
|
||||||
|
|
||||||
|
**核心目标**:掌握Rust的组合数据类型和强大的模式匹配
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 学习 `struct` 定义与使用(第5章) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 2 | 学习 `enum` 与 `match`(第6章) | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 理解 `Option<T>` 与空值处理(对比Java的null) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 4 | 完成 Rustlings `enums` + `strings` + `modules` | 2h | ⬜ | ___/___ |
|
||||||
|
| 5 | 学习 `if let` / `while let` 语法糖 | 1h | ⬜ | ___/___ |
|
||||||
|
| 6 | **实战项目**:命令行 Todo List 应用 | 3h | ⬜ | ___/___ |
|
||||||
|
| 7 | 周复习 + 代码重构优化 | 1.5h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ Rustlings 完成:`enums`, `strings`, `modules`
|
||||||
|
- ⬜ 命令行 Todo List(支持:添加任务、列出任务、标记完成、删除)
|
||||||
|
- ⬜ 掌握 `Option` 的 `map`, `unwrap_or`, `expect` 等方法
|
||||||
|
|
||||||
|
**Todo List 功能需求**:
|
||||||
|
- ⬜ 使用 `Vec<Task>` 存储任务
|
||||||
|
- ⬜ 每个任务包含:id、描述、完成状态
|
||||||
|
- ⬜ 使用 `enum Command` 处理不同命令
|
||||||
|
- ⬜ 数据存储在内存中(暂时不持久化)
|
||||||
|
|
||||||
|
**自我评估**:
|
||||||
|
- 理解难度:⭐⭐⭐⭐⭐
|
||||||
|
- 学习满意度:⭐⭐⭐⭐⭐
|
||||||
|
- 最大困惑点:_________________________
|
||||||
|
- 本周实际用时:____ 小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔷 第4周:错误处理、模块与集合
|
||||||
|
|
||||||
|
**核心目标**:掌握Rust的错误处理哲学和标准集合使用
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 学习 `Result<T, E>` 与错误传播(第9章) | 2h | ⬜ | ___/___ |
|
||||||
|
| 2 | 掌握 `?` 运算符与自定义错误类型 | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 3 | 学习模块系统(`mod`, `use`, `pub`, `crate`) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 4 | 学习 Vector、HashMap、String 深入操作 | 2h | ⬜ | ___/___ |
|
||||||
|
| 5 | 完成 Rustlings 剩余全部练习(`hashmaps`, `options`, `errors`) | 2h | ⬜ | ___/___ |
|
||||||
|
| 6 | **项目重构**:给 Todo List 添加文件持久化 + 错误处理 | 3h | ⬜ | ___/___ |
|
||||||
|
| 7 | 周复习 + 阅读一个开源Rust项目源码(如 ripgrep) | 2h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ Rustlings **全部完成** 🎉
|
||||||
|
- ⬜ Todo List 支持文件读写(JSON/CSV格式)
|
||||||
|
- ⬜ 所有函数返回 `Result`,无 `unwrap` 滥用
|
||||||
|
|
||||||
|
**代码质量检查**:
|
||||||
|
- ⬜ 项目中无任何 `unwrap()` 或 `expect()`(除测试外)
|
||||||
|
- ⬜ 使用 `?` 运算符进行错误传播
|
||||||
|
- ⬜ 合理的模块拆分(main.rs / lib.rs / task.rs / storage.rs)
|
||||||
|
|
||||||
|
**第一阶段总结**:
|
||||||
|
- 总用时:____ 小时
|
||||||
|
- Rustlings 完成率:____ / 84 题
|
||||||
|
- 自我感觉:⬜ 很吃力 ⬜ 有点难但还行 ⬜ 比较顺利
|
||||||
|
- 需要返工复习的内容:_________________________
|
||||||
|
|
||||||
|
### 📚 第一阶段参考资料
|
||||||
|
|
||||||
|
#### 官方文档(必读)
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **The Rust Programming Language(官方书)** | https://doc.rust-lang.org/book/ | 最权威的学习资料,第1-9章覆盖第一阶段 |
|
||||||
|
| **Rust By Example** | https://doc.rust-lang.org/rust-by-example/ | 通过示例学习,适合快速查阅语法 |
|
||||||
|
| **The Rust Reference** | https://doc.rust-lang.org/reference/ | 语法参考手册,遇到疑问时查阅 |
|
||||||
|
| **Rustlings** | https://github.com/rust-lang/rustlings | 官方命令行练习题,84题循序渐进 |
|
||||||
|
|
||||||
|
#### 中文资源
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Rust语言圣经(Rust Course)** | https://course.rs/ | 中文社区翻译的综合教程,非常详细 |
|
||||||
|
| **Rust程序设计语言(中文翻译)** | https://kaisery.github.io/trpl-zh-cn/ | 官方书的中文版 |
|
||||||
|
| **Rust中文社区** | https://rustcc.cn/ | 中文论坛,遇到问题可搜索或提问 |
|
||||||
|
| **Rust语言实战(极客时间)** | https://time.geekbang.org/ | 付费课程,体系化讲解 |
|
||||||
|
|
||||||
|
#### 视频教程(B站/YouTube)
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Rust编程语言入门(B站)** | https://www.bilibili.com/video/BV1hp4y1k7SV | 黑马程序员,适合零基础 |
|
||||||
|
| **Rust编程语言教程(B站)** | https://www.bilibili.com/video/BV1Ay4y1v7u8 | 尚硅谷出品,讲得很细 |
|
||||||
|
| **Let's Get Rusty(YouTube)** | https://www.youtube.com/c/LetsGetRusty | 英文,讲解清晰,覆盖全面 |
|
||||||
|
| **Jon Gjengset(YouTube)** | https://www.youtube.com/c/JonGjengset | 英文,深入源码级别,适合进阶 |
|
||||||
|
| **Rust语言教程(B站:张汉东)** | https://www.bilibili.com/video/BV1T54y1G73Z | 中文深入讲解,适合有编程基础者 |
|
||||||
|
|
||||||
|
#### 在线工具与练习
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Rust Playground** | https://play.rust-lang.org/ | 在线编写和运行Rust代码 |
|
||||||
|
| **Exercism Rust Track** | https://exercism.org/tracks/rust | 免费的编程练习平台,有导师评审 |
|
||||||
|
| **Rust Quiz** | https://dtolnay.github.io/rust-quiz/ | Rust趣味测验,检验理解深度 |
|
||||||
|
| **Rust Cheat Sheet** | https://cheats.rs/ | Rust语法速查表,非常全面 |
|
||||||
|
|
||||||
|
#### 所有权专题(重点攻克)
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Visualizing Memory in Rust** | https://www.youtube.com/watch?v=rDoqT-a6UFg | 图解Rust内存模型(英文视频) |
|
||||||
|
| **Rust Ownership Explained** | https://www.youtube.com/watch?v=Vg1LGHuAPPk | Let's Get Rusty 所有权详解 |
|
||||||
|
| **Understanding Ownership(中文)** | https://course.rs/basic/ownership.html | Rust语言圣经中的所有权章节 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📗 第二阶段:Rust 进阶
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔶 第5周:泛型与Trait
|
||||||
|
|
||||||
|
**核心目标**:理解Rust的多态机制(对比Java的泛型和接口)
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 学习泛型(Generics)语法(第10章) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 2 | 学习 Trait 定义与实现(第10章) | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 理解 Trait Bounds 与泛型约束 | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 4 | 学习常用标准库 Trait:`Display`, `Debug`, `Clone`, `PartialEq` | 2h | ⬜ | ___/___ |
|
||||||
|
| 5 | 实现自定义 Trait:为不同类型实现同一行为 | 2h | ⬜ | ___/___ |
|
||||||
|
| 6 | 学习闭包(Closures)与迭代器(Iterators) | 2h | ⬜ | ___/___ |
|
||||||
|
| 7 | **实战**:用泛型和 Trait 实现通用排序 + 迭代器处理文件 | 2h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ 实现一个通用排序函数 `fn sort<T: Ord>(list: &mut [T])`
|
||||||
|
- ⬜ 为自定义结构体实现 `Display` 和 `Debug`
|
||||||
|
- ⬜ 使用迭代器处理大文件(逐行读取,统计行数/单词数)
|
||||||
|
|
||||||
|
**自我评估**:
|
||||||
|
- Trait 理解程度:⭐⭐⭐⭐⭐
|
||||||
|
- 与Java Interface 的对比感悟:_________________________
|
||||||
|
- 本周实际用时:____ 小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔶 第6周:智能指针与并发基础
|
||||||
|
|
||||||
|
**核心目标**:理解堆内存管理与Rust的"无畏并发"
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 学习 `Box<T>` 与堆分配(第15章) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 2 | 学习 `Rc<T>`(引用计数)与 `RefCell<T>`(内部可变性) | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 学习 `Arc<T>`(原子引用计数)与 `Mutex<T>`(互斥锁) | 2h | ⬜ | ___/___ |
|
||||||
|
| 4 | 学习线程基础(`thread::spawn`)与 `move` 闭包 | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 5 | 理解 `Send` 和 `Sync` trait | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 6 | **实战**:多线程文件下载器(下载多个URL) | 3h | ⬜ | ___/___ |
|
||||||
|
| 7 | 周复习 + 整理并发安全概念 | 1.5h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ 实现多线程下载器(支持同时下载3-5个文件)
|
||||||
|
- ⬜ 使用 `Arc<Mutex<T>>` 共享下载进度
|
||||||
|
- ⬜ 理解为什么Rust能在编译期防止数据竞争
|
||||||
|
|
||||||
|
**关键理解检查**:
|
||||||
|
- ⬜ `Rc` vs `Arc` 的使用场景?
|
||||||
|
- ⬜ `Mutex` 在Rust中与Java的 `synchronized` 有何异同?
|
||||||
|
- ⬜ 什么是 `Send`?什么是 `Sync`?
|
||||||
|
|
||||||
|
**自我评估**:
|
||||||
|
- 理解难度:⭐⭐⭐⭐⭐
|
||||||
|
- 并发部分比Java更/更难理解?_________________________
|
||||||
|
- 本周实际用时:____ 小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔶 第7周:异步编程与Tokio
|
||||||
|
|
||||||
|
**核心目标**:掌握Rust的async/await与异步生态
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 学习 `async/await` 语法与 `Future` trait | 2h | ⬜ | ___/___ |
|
||||||
|
| 2 | 了解 `tokio` 运行时与异步IO | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 学习异步HTTP请求(`reqwest` 库) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 4 | 完成 [Tokio Tutorial](https://tokio.rs/tokio/tutorial) 前半部分 | 2h | ⬜ | ___/___ |
|
||||||
|
| 5 | 学习 Cargo 工作区(Workspaces) | 1h | ⬜ | ___/___ |
|
||||||
|
| 6 | **实战**:异步HTTP客户端(并发请求多个API) | 2.5h | ⬜ | ___/___ |
|
||||||
|
| 7 | 探索 crates.io:了解Rust生态常用库 | 1.5h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ 使用 `tokio` 编写异步程序
|
||||||
|
- ⬜ 异步HTTP客户端(支持超时、重试、并发限制)
|
||||||
|
- ⬜ 整理常用Crates清单(serde、reqwest、tokio、anyhow等)
|
||||||
|
|
||||||
|
**第二阶段总结**:
|
||||||
|
- 总用时:____ 小时
|
||||||
|
- 对Rust的信心度:⭐⭐⭐⭐⭐
|
||||||
|
- 最感兴趣的方向:⬜ 系统编程 ⬜ Web后端 ⬜ 桌面应用 ⬜ 其他____
|
||||||
|
|
||||||
|
### 📚 第二阶段参考资料
|
||||||
|
|
||||||
|
#### 官方文档(必读)
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **The Rust Programming Language(第10-20章)** | https://doc.rust-lang.org/book/ | 泛型、Trait、智能指针、并发、不安全Rust |
|
||||||
|
| **Rust标准库文档** | https://doc.rust-lang.org/std/ | 查阅标准库API,熟悉常用模块 |
|
||||||
|
| **Tokio官方教程** | https://tokio.rs/tokio/tutorial | 异步编程的权威指南,必读 |
|
||||||
|
| **Rust Cookbook** | https://rust-lang-nursery.github.io/rust-cookbook/ | 常见任务的代码示例集合 |
|
||||||
|
|
||||||
|
#### 进阶书籍(选读)
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Programming Rust(O'Reilly)** | https://www.oreilly.com/library/view/programming-rust-2nd/9781492052586/ | 深入讲解,适合Java/C++背景 |
|
||||||
|
| **Rust for Rustaceans** | https://rust-for-rustaceans.com/ | 高级主题,系统设计层面 |
|
||||||
|
| **Rust Atomics and Locks** | https://marabos.nl/atomics/ | 并发编程深入讲解,免费在线阅读 |
|
||||||
|
|
||||||
|
#### 视频教程
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Crust of Rust(Jon Gjengset)** | https://www.youtube.com/playlist?list=PLqbS7AVVErFiWDOAVrPt7WAmSMAHFYqKB | 深入讲解高级概念,如生命周期、Pin等 |
|
||||||
|
| **Rust并发编程(B站)** | https://www.bilibili.com/video/BV1yT4y1u7qp | 中文讲解并发模型 |
|
||||||
|
| **Tokio Tutorial 视频版** | https://www.youtube.com/watch?v=4QDUkjTUAWs | 异步运行时原理解析 |
|
||||||
|
| **Rust Lifetimes Explained** | https://www.youtube.com/watch?v=1QoT9fmQds4 | 生命周期可视化讲解 |
|
||||||
|
|
||||||
|
#### 异步与并发专题
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Async Rust(Asynchronous Programming in Rust)** | https://rust-lang.github.io/async-book/ | 官方异步编程书籍 |
|
||||||
|
| **Fearless Concurrency(Rust官方)** | https://doc.rust-lang.org/book/ch16-00-concurrency.html | 并发章节官方文档 |
|
||||||
|
| **Tokio文档** | https://docs.rs/tokio/latest/tokio/ | Tokio API文档 |
|
||||||
|
| **Rayon(数据并行)** | https://github.com/rayon-rs/rayon | 并行迭代器库,简单易用 |
|
||||||
|
|
||||||
|
#### 常用Crates(库)速查
|
||||||
|
| Crate | 用途 | 文档链接 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **serde** | JSON/序列化 | https://serde.rs/ |
|
||||||
|
| **reqwest** | HTTP客户端 | https://docs.rs/reqwest |
|
||||||
|
| **tokio** | 异步运行时 | https://tokio.rs/ |
|
||||||
|
| **anyhow/thiserror** | 错误处理 | https://docs.rs/anyhow |
|
||||||
|
| **clap** | 命令行参数解析 | https://docs.rs/clap |
|
||||||
|
| **chrono** | 日期时间处理 | https://docs.rs/chrono |
|
||||||
|
| **log/env_logger** | 日志记录 | https://docs.rs/log |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📙 第三阶段:Tauri 框架
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🟢 第8周:Tauri 基础与项目搭建
|
||||||
|
|
||||||
|
**核心目标**:理解Tauri架构,成功运行第一个桌面应用
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 阅读 Tauri 官方文档 "Getting Started" | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 2 | 理解 Tauri 架构(Rust后端 + Web前端进程隔离) | 1h | ⬜ | ___/___ |
|
||||||
|
| 3 | 环境准备:Node.js + Tauri CLI + 前端框架(Vue/React) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 4 | 创建第一个 Tauri 应用并运行 | 1h | ⬜ | ___/___ |
|
||||||
|
| 5 | 学习 `tauri.conf.json` 配置 | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 6 | 学习 IPC:Commands(前端调用Rust函数) | 2h | ⬜ | ___/___ |
|
||||||
|
| 7 | 学习 IPC:Events(Rust向前端发送事件) | 2h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ 成功运行 "Hello Tauri" 应用
|
||||||
|
- ⬜ 实现一个 Command:前端按钮调用Rust函数计算斐波那契数列
|
||||||
|
- ⬜ 实现一个 Event:Rust定时向前端推送系统时间
|
||||||
|
|
||||||
|
**关键检查点**:
|
||||||
|
- ⬜ 能解释 Tauri 与 Electron 的核心区别?
|
||||||
|
- ⬜ 理解 `invoke` 和 `emit`/`listen` 的适用场景?
|
||||||
|
|
||||||
|
**自我评估**:
|
||||||
|
- Tauri 上手难度:⭐⭐⭐⭐⭐
|
||||||
|
- 本周实际用时:____ 小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🟢 第9周:Tauri 核心功能实战
|
||||||
|
|
||||||
|
**核心目标**:开发一个功能完整的 Markdown 编辑器
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 学习 Tauri State Management(Managed State) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 2 | 学习文件系统API(读取、写入、监听文件变化) | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 设计 Markdown 编辑器UI(编辑区 + 预览区分栏) | 2h | ⬜ | ___/___ |
|
||||||
|
| 4 | 实现文件打开/保存功能(Rust后端 + 前端调用) | 2.5h | ⬜ | ___/___ |
|
||||||
|
| 5 | 集成 Markdown 渲染(前端使用 marked 等库) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 6 | 实现最近打开文件列表 | 2h | ⬜ | ___/___ |
|
||||||
|
| 7 | 周复习 + 代码重构 | 1.5h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ Markdown 编辑器 v0.1(支持打开/编辑/预览/保存)
|
||||||
|
- ⬜ 最近打开文件列表(持久化到本地配置文件)
|
||||||
|
|
||||||
|
**功能验收清单**:
|
||||||
|
- ⬜ 通过系统对话框选择 `.md` 文件
|
||||||
|
- ⬜ 实时预览 Markdown 渲染效果
|
||||||
|
- ⬜ 保存时覆盖原文件
|
||||||
|
- ⬜ 重启后保留最近文件列表
|
||||||
|
|
||||||
|
**自我评估**:
|
||||||
|
- 前端与Rust协作顺畅度:⭐⭐⭐⭐⭐
|
||||||
|
- 本周实际用时:____ 小时
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🟢 第10周:Tauri 高级特性与打包
|
||||||
|
|
||||||
|
**核心目标**:完善应用并掌握打包发布流程
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 学习 Tauri 菜单(Menu)与系统托盘(System Tray) | 2h | ⬜ | ___/___ |
|
||||||
|
| 2 | 实现自动保存功能(定时器 + 文件写入) | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 学习 Tauri 打包配置(Windows .msi / .exe) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 4 | 成功打包 Markdown 编辑器为安装程序 | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 5 | 学习 Tauri 自动更新(Updater)机制 | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 6 | 学习安全最佳实践(CSP、权限最小化) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 7 | 项目优化 + README 编写 + 开源发布准备 | 2h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ Markdown 编辑器 v1.0 完整版
|
||||||
|
- ⬜ Windows 安装包(.msi)
|
||||||
|
- ⬜ 项目README(含截图、安装说明)
|
||||||
|
|
||||||
|
**功能验收清单**:
|
||||||
|
- ⬜ 系统托盘图标 + 右键菜单
|
||||||
|
- ⬜ 自动保存(每30秒或编辑后5秒)
|
||||||
|
- ⬜ 可安装的 Windows 安装包
|
||||||
|
- ⬜ 应用图标自定义
|
||||||
|
|
||||||
|
**第三阶段总结**:
|
||||||
|
- 总用时:____ 小时
|
||||||
|
- 对Tauri的满意度:⭐⭐⭐⭐⭐
|
||||||
|
- 是否打算用Tauri做实际项目?⬜ 是 ⬜ 否 ⬜ 不确定
|
||||||
|
|
||||||
|
### 📚 第三阶段参考资料
|
||||||
|
|
||||||
|
#### Tauri 官方资源(必读)
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Tauri 官方文档** | https://tauri.app/v1/guides/ | 最权威的Tauri指南 |
|
||||||
|
| **Tauri API 文档** | https://tauri.app/v1/api/ | Commands、Events、Window等API |
|
||||||
|
| **Tauri 配置参考** | https://tauri.app/v1/references/configuration-files/ | tauri.conf.json完整配置说明 |
|
||||||
|
| **Tauri 示例仓库** | https://github.com/tauri-apps/tauri/tree/dev/examples | 官方示例代码 |
|
||||||
|
| **Awesome Tauri** | https://github.com/tauri-apps/awesome-tauri | Tauri生态资源汇总 |
|
||||||
|
|
||||||
|
#### Tauri 插件与生态
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Tauri Plugin官方列表** | https://tauri.app/v1/guides/features/plugin/ | 官方维护的插件 |
|
||||||
|
| **tauri-plugin-store** | https://github.com/tauri-apps/tauri-plugin-store | 本地键值存储 |
|
||||||
|
| **tauri-plugin-sql** | https://github.com/tauri-apps/tauri-plugin-sql | SQLite数据库支持 |
|
||||||
|
| **tauri-plugin-log** | https://github.com/tauri-apps/tauri-plugin-log | 日志记录插件 |
|
||||||
|
| **tauri-plugin-fs-extra** | https://github.com/tauri-apps/tauri-plugin-fs-extra | 扩展文件系统API |
|
||||||
|
|
||||||
|
#### 视频教程
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Tauri入门教程(B站)** | https://www.bilibili.com/video/BV1hM41127Gx | 中文Tauri基础教程 |
|
||||||
|
| **Build a Desktop App with Tauri** | https://www.youtube.com/watch?v=BY_ZjPGqJJk | YouTube英文实战教程 |
|
||||||
|
| **Tauri vs Electron** | https://www.youtube.com/watch?v=bTl7z0d9hTE | 技术选型对比 |
|
||||||
|
| **Tauri 1.0 Release Walkthrough** | https://www.youtube.com/watch?v=1Z_1URhw0W0 | 官方发布介绍 |
|
||||||
|
|
||||||
|
#### Tauri 实战项目参考
|
||||||
|
| 项目 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **CakeBaker(Markdown编辑器)** | https://github.com/cakebaker/markdown-editor | 简单的Tauri Markdown编辑器 |
|
||||||
|
| **Tauri Notes** | https://github.com/probablykasper/tauri-test | 笔记应用示例 |
|
||||||
|
| **Tauri Todo** | 搜索 GitHub `tauri todo` | 多个Todo应用实现参考 |
|
||||||
|
|
||||||
|
#### 打包与发布
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Tauri 打包指南** | https://tauri.app/v1/guides/building/ | Windows/Mac/Linux打包 |
|
||||||
|
| **代码签名** | https://tauri.app/v1/guides/distribution/sign-windows/ | Windows证书签名 |
|
||||||
|
| **自动更新** | https://tauri.app/v1/guides/distribution/updater/ | 应用自动更新配置 |
|
||||||
|
| **NSIS安装程序** | https://tauri.app/v1/guides/building/windows/ | Windows安装包定制 |
|
||||||
|
|
||||||
|
#### 前端框架搭配建议
|
||||||
|
| 框架 | Tauri模板命令 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Vue 3** | `npm create tauri-app@latest` 选择Vue | 推荐,生态丰富 |
|
||||||
|
| **React** | 同上选择React | 熟悉React的首选 |
|
||||||
|
| **Svelte** | 同上选择Svelte | 轻量高效 |
|
||||||
|
| **Vanilla JS** | 同上选择Vanilla | 无需学习额外框架 |
|
||||||
|
| **SolidJS** | 同上选择Solid | 性能优秀 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📕 第四阶段:综合实战项目
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🟣 第11周:项目设计与核心功能开发
|
||||||
|
|
||||||
|
**选择你的实战项目**:
|
||||||
|
- ⬜ **项目A**:API测试工具(类似Postman简化版)
|
||||||
|
- ⬜ **项目B**:番茄钟 + 任务管理器
|
||||||
|
- ⬜ **项目C**:自定义项目 _________________________
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 项目需求分析 + 技术选型 + UI原型设计 | 2h | ⬜ | ___/___ |
|
||||||
|
| 2 | 搭建项目骨架(Tauri + 前端框架 + Rust结构) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 3 | 实现核心数据模型与Rust后端逻辑 | 3h | ⬜ | ___/___ |
|
||||||
|
| 4 | 实现前端主要界面组件 | 3h | ⬜ | ___/___ |
|
||||||
|
| 5 | 前后端联调:IPC通信调试 | 2h | ⬜ | ___/___ |
|
||||||
|
| 6 | 功能迭代与bug修复 | 2h | ⬜ | ___/___ |
|
||||||
|
| 7 | 周总结 + 下周计划调整 | 1h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**本周产出清单**:
|
||||||
|
- ⬜ 项目仓库初始化 + 提交记录
|
||||||
|
- ⬜ 核心功能可用(至少完成60%)
|
||||||
|
|
||||||
|
**自我评估**:
|
||||||
|
- 本周实际用时:____ 小时
|
||||||
|
- 遇到的阻塞问题:_________________________
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🟣 第12周:项目收尾与总结
|
||||||
|
|
||||||
|
| 序号 | 每日学习任务 | 预计时长 | 完成 | 日期 |
|
||||||
|
|:---:|:---|:---:|:---:|:---|
|
||||||
|
| 1 | 完成剩余功能开发 | 2h | ⬜ | ___/___ |
|
||||||
|
| 2 | 代码重构与优化(错误处理、性能、UI) | 2h | ⬜ | ___/___ |
|
||||||
|
| 3 | 打包测试(多平台如有条件) | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 4 | 编写项目README + 使用说明 | 1.5h | ⬜ | ___/___ |
|
||||||
|
| 5 | 整理学习笔记 + 建立个人Rust知识库 | 2h | ⬜ | ___/___ |
|
||||||
|
| 6 | 规划后续学习方向 | 1h | ⬜ | ___/___ |
|
||||||
|
| 7 | 🎉 庆祝完成!写一份学习总结 | 1h | ⬜ | ___/___ |
|
||||||
|
|
||||||
|
**最终产出清单**:
|
||||||
|
- ⬜ 一个可运行的 Tauri 桌面应用
|
||||||
|
- ⬜ GitHub/GitLab 仓库(代码+文档)
|
||||||
|
- ⬜ 个人Rust学习笔记/博客
|
||||||
|
|
||||||
|
### 📚 第四阶段参考资料
|
||||||
|
|
||||||
|
#### 项目设计参考
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Tauri GitHub Topic** | https://github.com/topics/tauri | 发现优秀的Tauri开源项目 |
|
||||||
|
| **Rust项目架构指南** | https://rust-unofficial.github.io/patterns/ | Rust设计模式 |
|
||||||
|
| **API Testing Tools(开源)** | https://github.com/topics/api-client | API测试工具参考 |
|
||||||
|
| **Pomodoro Apps(开源)** | https://github.com/topics/pomodoro | 番茄钟应用参考 |
|
||||||
|
|
||||||
|
#### UI/UX 设计资源
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Figma社区** | https://www.figma.com/community | 免费UI设计模板 |
|
||||||
|
| **Heroicons** | https://heroicons.com/ | 免费SVG图标 |
|
||||||
|
| **Feather Icons** | https://feathericons.com/ | 简洁风格图标 |
|
||||||
|
| **Tailwind CSS** | https://tailwindcss.com/ | 快速构建美观UI |
|
||||||
|
| **shadcn/ui** | https://ui.shadcn.com/ | 精美的React组件库 |
|
||||||
|
| **Element Plus(Vue)** | https://element-plus.org/ | Vue3组件库 |
|
||||||
|
| **Vuetify** | https://vuetifyjs.com/ | Vue Material Design组件 |
|
||||||
|
|
||||||
|
#### Rust项目最佳实践
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Rust API Guidelines** | https://rust-lang.github.io/api-guidelines/ | 编写优质Rust API的规范 |
|
||||||
|
| **Rust Project Layout** | https://doc.rust-lang.org/cargo/guide/project-layout.html | 项目目录结构规范 |
|
||||||
|
| **Rust Testing Guide** | https://doc.rust-lang.org/rust-by-example/testing.html | 测试编写指南 |
|
||||||
|
| **Clippy(代码检查)** | https://doc.rust-lang.org/clippy/ | Rust代码Lint工具 |
|
||||||
|
| **Rustfmt(代码格式化)** | https://github.com/rust-lang/rustfmt | 统一代码风格 |
|
||||||
|
|
||||||
|
#### 发布与推广
|
||||||
|
| 资源 | 链接 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **GitHub Actions for Tauri** | https://tauri.app/v1/guides/building/cross-platform/ | CI/CD自动打包 |
|
||||||
|
| **Release Please** | https://github.com/googleapis/release-please | 自动版本管理和发布 |
|
||||||
|
| **Product Hunt发布指南** | https://www.producthunt.com/ | 推广你的应用 |
|
||||||
|
| **V2EX/即刻/掘金** | 国内技术社区 | 分享学习心得和项目 |
|
||||||
|
|
||||||
|
#### 后续深入学习路线
|
||||||
|
| 方向 | 推荐资源 | 说明 |
|
||||||
|
|:---|:---|:---|
|
||||||
|
| **Web后端** | Actix-web (https://actix.rs/) / Axum (https://github.com/tokio-rs/axum) | Rust Web框架 |
|
||||||
|
| **数据库** | SQLx (https://github.com/launchbadge/sqlx) / Diesel (https://diesel.rs/) | 异步SQL工具包 |
|
||||||
|
| **GraphQL** | async-graphql (https://async-graphql.github.io/) | Rust GraphQL实现 |
|
||||||
|
| **WASM** | wasm-bindgen (https://github.com/rustwasm/wasm-bindgame) | Rust编译到WebAssembly |
|
||||||
|
| **游戏开发** | Bevy (https://bevyengine.org/) / Macroquad | Rust游戏引擎 |
|
||||||
|
| **嵌入式** | Embassy (https://embassy.dev/) / probe-rs | 嵌入式异步框架 |
|
||||||
|
| **CLI工具** | clap (https://docs.rs/clap) / dialoguer / indicatif | 命令行工具开发 |
|
||||||
|
| **网络协议** | tonic (gRPC) / libp2p (P2P网络) | 底层网络开发 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 学习总结与展望
|
||||||
|
|
||||||
|
### 12周总回顾
|
||||||
|
|
||||||
|
| 维度 | 评分(1-5) | 备注 |
|
||||||
|
|:---|:---:|:---|
|
||||||
|
| Rust 语言掌握度 | ⭐⭐⭐⭐⭐ | |
|
||||||
|
| Tauri 框架掌握度 | ⭐⭐⭐⭐⭐ | |
|
||||||
|
| 异步编程理解 | ⭐⭐⭐⭐⭐ | |
|
||||||
|
| 并发编程理解 | ⭐⭐⭐⭐⭐ | |
|
||||||
|
| 项目实战能力 | ⭐⭐⭐⭐⭐ | |
|
||||||
|
|
||||||
|
### 学习成果统计
|
||||||
|
- **总投入时间**:____ 小时
|
||||||
|
- **完成项目数**:____ 个
|
||||||
|
- **Rustlings 完成数**:____ / 84
|
||||||
|
- **写出代码行数(估算)**:____ 行
|
||||||
|
|
||||||
|
### 后续学习方向(可选)
|
||||||
|
- ⬜ **Actix-web / Axum**:Rust Web后端开发
|
||||||
|
- ⬜ **Diesel / SQLx**:Rust ORM与数据库
|
||||||
|
- ⬜ **WASM**:Rust编译到WebAssembly
|
||||||
|
- ⬜ **嵌入式Rust**:no_std 开发
|
||||||
|
- ⬜ **开源贡献**:为Rust项目提交PR
|
||||||
|
- ⬜ **工作应用**:将Rust/Tauri引入实际工作
|
||||||
|
|
||||||
|
### 最有价值的3个学习资源
|
||||||
|
1. _________________________
|
||||||
|
2. _________________________
|
||||||
|
3. _________________________
|
||||||
|
|
||||||
|
### 给后来者的建议
|
||||||
|
_________________________________________________________________
|
||||||
|
_________________________________________________________________
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 附录:常用命令速查
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Rust 基础
|
||||||
|
rustc --version # 查看版本
|
||||||
|
cargo new project_name # 创建新项目
|
||||||
|
cargo build # 编译
|
||||||
|
cargo run # 编译并运行
|
||||||
|
cargo test # 运行测试
|
||||||
|
cargo check # 快速检查(不生成二进制)
|
||||||
|
cargo add crate_name # 添加依赖
|
||||||
|
|
||||||
|
# Tauri
|
||||||
|
cargo create-tauri-app # 创建Tauri项目
|
||||||
|
cargo tauri dev # 开发模式运行
|
||||||
|
cargo tauri build # 打包发布
|
||||||
|
|
||||||
|
# Rustlings
|
||||||
|
rustlings watch # 自动检查练习
|
||||||
|
rustlings run exercises/xxx # 运行单个练习
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> 💪 **坚持就是胜利!Rust的学习曲线虽然陡峭,但登顶后的风景绝对值得!**
|
||||||
Loading…
Reference in New Issue