Canvas 实战:课程地图

学习目标

  • 综合运用 Canvas 的各项功能,设计一张实用的课程地图。
  • 掌握用 Canvas 组织课程章节、依赖关系、完成状态的方法。
  • 学会将 Canvas 嵌入教程入口文档。
  • 学会使用 Advanced Canvas 插件增强课程地图的交互与展示效果。

前置条件

  • 已掌握 Canvas 基础操作(参考 00_obsidian_canvas基础)。
  • 已了解本教程的全部章节结构。
  • 已安装并启用 Advanced Canvas 社区插件(建议,非强制)。

项目概述

在本实战项目中,你将创建一张 教程课程地图 Canvas,将本仓库的全部章节以可视化方式呈现,包括:

  • 各章节的定位与主题。
  • 章节之间的前置依赖关系。
  • 当前的完成状态(已完成 / 待编写)。
  • 快速跳转到对应章节的链接。

这张课程地图可以直接嵌入 README.md 或作为独立导航页面使用。

步骤

第 1 步:规划卡片布局

在动手之前,先用草图规划布局。推荐结构:

                   ┌─────────────────┐
                   │   section0: 导读  │
                   └────────┬─────────┘
                            │
              ┌─────────────┼─────────────┐
              │             │             │
     ┌────────▼──┐  ┌──────▼──────┐  ┌───▼────────┐
     │section1:   │  │section2:    │  │section4:    │
     │环境安装    │  │Markdown基础  │  │Git协作      │
     └───────────-┘  └──────┬──────┘  └──────┬──────┘
                            │                │
                    ┌───────▼──────┐         │
                    │section3:     │         │
                    │扩展语法      │         │
                    └──────────────┘         │
                                            │
     ┌──────────────┐  ┌──────────────┐     │
     │section5:     │  │section6:     │     │
     │Canvas        │  │Bases         │     │
     └──────┬───────┘  └──────┬───────┘     │
            │                 │             │
     ┌──────▼───────┐  ┌──────▼───────┐     │
     │section7:     │  │section8:     │     │
     │Syncthing     │  │Copilot基础   │     │
     └──────────────┘  └──────┬───────┘     │
                              │             │
                       ┌──────▼──────┐      │
                       │section9:    │      │
                       │Copilot实战  │      │
                       └─────────────┘      │
                                            │
                       ┌────────────────────┘
                       │
              ┌────────▼────────┐
              │    附录         │
              │ 术语表/FAQ/日志 │
              └─────────────────┘

你也可以自由设计自己的布局,只要清晰反映章节关系和状态即可。

第 2 步:创建基础画布

  1. section5/ 文件夹下新建 Canvas,命名为 教程课程地图.canvas
  2. Ctrl + 0 适应画布大小。
  3. 如果需要更大空间,滚动到空白区域。

第 3 步:创建章节卡片

为每个章节创建一个文本卡片,内容格式建议:

# section0
## 课程导读与协作规范
状态: ✅ 完成

建议使用不同颜色区分状态:

状态卡片边框颜色说明
✅ 完成绿色已编写完成
🔄 进行中蓝色正在编写
⬜ 待编写灰色尚未开始

卡片边框颜色可以在选中卡片后,在右侧属性面板中设置。

按照以上格式,为以下章节创建卡片:

主题当前状态
section0课程导读与协作规范✅ 完成
section1环境安装✅ 完成
section2Markdown 基础语法✅ 完成
section3Markdown 扩展与 Obsidian 语法✅ 完成
section4Git/GitHub 可视化协作✅ 完成
section5Obsidian Canvas🔄 进行中
section6Obsidian Bases⬜ 待编写
section7Syncthing 局域网同步⬜ 待编写
section8VS Code Copilot 基础⬜ 待编写
section9Copilot 实战案例⬜ 待编写
附录术语表 / FAQ / 更新日志⬜ 待编写

第 4 步:添加链接跳转

为每张卡片添加跳转到对应章节笔记的链接。

方法:

  1. 双击卡片进入编辑模式。
  2. 在卡片底部添加 WikiLink:
📖 [[section0/00_课程导读与协作规范.md|前往学习]]

你也可以利用 Canvas 的嵌入功能,将章节的 00_ 文件直接嵌入为笔记卡片:

  1. 从左侧文件列表中拖拽 section1/00_环境安装总览.md 到画布上。
  2. 调整卡片大小,显示预览内容。
  3. 双击笔记卡片可在 Obsidian 中打开。

第 5 步:绘制连接线

根据章节依赖关系绘制连接线:

关系建议颜色
section0section1前置🔵 蓝色
section1section2前置🔵 蓝色
section2section3前置🔵 蓝色
section1section4前置🔵 蓝色
section1section5前置🔵 蓝色
section1section6前置🔵 蓝色
section1section7前置🔵 蓝色
section1section8前置🔵 蓝色
section8section9前置🔵 蓝色

连接线设置建议:

  • 颜色:蓝色表示前置依赖,绿色表示扩展关联。
  • 线型:直线表示强依赖,虚线表示可选。
  • 箭头:从依赖章节指向目标章节。

第 6 步:创建分组

为三个里程碑创建分组,增强可读性:

M1 基础可用组:

  • 包含:section0, section1, section2, section3, section4
  • 组标签:📦 M1:基础可用
  • 颜色:绿色半透明

M2 Obsidian 进阶组:

  • 包含:section5, section6, section7
  • 组标签:🗺 M2:Obsidian 进阶
  • 颜色:蓝色半透明

M3 Copilot 体系组:

  • 包含:section8, section9
  • 组标签:🤖 M3:Copilot 体系
  • 颜色:紫色半透明

第 7 步:添加图例和说明

在画布角落添加一张”图例”卡片,帮助读者理解:

# 图例
 
## 卡片状态
 
- 🟩 绿色边框 — 已完成
- 🟦 蓝色边框 — 进行中
- ⬜ 灰色边框 — 待编写
 
## 连接线
 
- 🔵 蓝色实线 — 前置依赖
- 🟢 绿色虚线 — 扩展关联
 
## 分组
 
各组代表一个里程碑阶段。

第 8 步:查看课程地图

本仓库已为你创建了一个完整的课程地图示例:教程课程地图.canvas(与本文件在同一目录下)。

  1. 在 Obsidian 中打开本仓库 Vault。
  2. 在文件列表中点击 section5/教程课程地图.canvas
  3. 你将看到一张完整的交互式课程地图,包含:
    • 全部 11 个章节卡片(含状态色标)。
    • 蓝色箭头连接线表示前置依赖关系。
    • 三个里程碑分组(M1 / M2 / M3)。
    • 左上角的图例卡片。

你可以直接在此基础上修改——拖拽卡片、调整连线、更新状态,Canvas 会自动保存。

如果你是从 VS Code 或 GitHub 网页查看,.canvas 文件会显示为原始 JSON,无法渲染。请务必在 Obsidian 中打开以体验完整交互效果。

第 9 步:升级为 Advanced Canvas 交互版(可选)

在不破坏原有结构的前提下,给课程地图增加以下增强能力:

  1. 分组折叠/展开

    • M1 / M2 / M3 三个里程碑分组设置为可折叠。
    • 演示时先折叠全部,再按讲解顺序逐组展开。
  2. 演示模式(Presentation)

    • 为节点建立一条演示路径(例如 section0 → section1 → section2 → ...)。
    • 打开命令面板执行 Advanced Canvas: Start presentation
    • 使用方向键翻页,Esc 退出。
  3. Portal(门户)拆分复杂区域

    • 当某个章节信息过多时,单独创建子画布(如 section5-细节.canvas)。
    • 在主画布中嵌入该子画布并切换为 Portal,保持主图简洁。
  4. 增强导出(PNG/SVG)

    • 导出一张 SVG 版本课程地图,便于在文档或幻灯片中复用。
    • 如用于 README 展示,优先导出透明背景 PNG,便于适配不同背景色。
  5. 节点模板统一样式

    • 选中一个“章节标准卡片”作为模板保存。
    • 新增章节节点时直接套用模板,避免重复调样式。
  6. 增强 frontmatter(建议优先启用)

    • 点击 Canvas 右上角信息按钮,编辑当前 教程课程地图.canvas 的 frontmatter。
    • 为课程地图补充检索与协作字段(如 tagsaliasesstatusowner)。
    • 建议初始模板:
---
tags:
  - tutorial
  - roadmap
  - canvas
aliases:
  - 教程课程地图
status: in-progress
owner: tutorial-team
review_cycle: monthly
---

渐进式增强

建议先完成原生 Canvas 主流程,再启用 Advanced Canvas 特性。这样在协作和回滚时更容易定位问题。

扩展阅读

常见问题

Q:卡片太多,画布变得很乱怎么办?
A:使用分组(Groups)来归类卡片,并利用缩放和平移聚焦到特定区域。也可以将不同主题放在不同的 Canvas 中。

Q:如何快速更新所有卡片的状态?
A:可以一次性修改一个章节的状态后,使用 Obsidian 的搜索功能查找所有 Canvas 文件批量更新。目前 Canvas 不支持自动状态同步。

Q:课程地图嵌入 README.md 后不显示?
A:在 GitHub 等平台上,.canvas 文件无法直接渲染。建议在 README 中使用截图 + 链接的方式:

[![课程地图缩略图](section5/课程地图截图.png)](section5/教程课程地图.canvas)

先在 Obsidian 中打开 Canvas,右键 → 复制截图,保存为图片,再用上面的方式引用。

Q:命令面板里找不到 Advanced Canvas 相关命令?
A:通常是插件未启用或加载失败。请在设置 → 社区插件中确认已启用 Advanced Canvas,然后重启 Obsidian 再试。

Q:Canvas 的 frontmatter 应该写哪些字段?
A:最低建议写 tagsstatus。如果是团队协作,再增加 ownerreview_cycle。字段名尽量在团队内保持一致,避免后续筛选混乱。

练习任务

  1. 在 Obsidian 中打开 section5/教程课程地图.canvas,查看课程地图示例。
  2. 尝试拖拽卡片调整布局,观察与其他卡片的连接线是否跟随移动。
  3. 修改一张卡片的状态文字(例如将 section6 的”⬜ 待编写”改为”🔄 进行中”)。
  4. 在图例卡片中新增一行”🟣 紫色 — Copilot 体系”。
  5. (可选)安装并启用 Advanced Canvas,完成以下任意两项:
    • 启动一次演示模式并按顺序浏览章节。
    • 将一个分组设为可折叠并演示展开/收起。
    • 导出一张 SVG 或透明背景 PNG。
    • 为章节卡片保存并应用一个节点模板。
  6. (可选)为 教程课程地图.canvas 添加 frontmatter,至少包含 tagsstatusowner 三个字段。
  7. (可选)创建你自己的 Canvas 画布,用于其他项目的规划。

验收清单

  • 在 Obsidian 中成功打开 教程课程地图.canvas
  • Canvas 包含所有 11 个章节卡片 + 图例
  • 每张卡片标题清晰,状态标识正确
  • 连接线正确反映章节依赖关系
  • 已创建三个里程碑分组(M1 / M2 / M3)
  • 图例卡片解释了颜色含义
  • 能自由拖拽和编辑 Canvas 内容
  • (可选)已完成至少 2 项 Advanced Canvas 增强操作
  • (可选)已为课程地图补充 frontmatter 元数据(如 tags/status/owner