用户进度系统使用户能够在 roadmap.sh 上通过路线图和最佳实践追踪他们的学习历程。它允许用户将主题标记为“已完成”、“进行中”、“已跳过”或“待处理”,并在路线图上可视化这些进度,同时在用户登录时将进度数据在本地存储和服务器之间同步。
进度跟踪系统旨在帮助用户跟踪他们在各种学习路线图和最佳实践中的进展。进度在路线图上以不同的样式视觉化表示,用于已完成、进行中或已跳过的项目。
来源: src/lib/resource-progress.ts9-14 src/components/TopicDetail/TopicProgressButton.tsx28-34
系统跟踪两种主要资源类型的进度
对于这些资源中的每个主题,用户可以将其进度标记为以下状态之一
| 进度状态 | 视觉指示器 | 描述 |
|---|---|---|
| 已完成 | 绿色样式,删除线文本 | 主题已完成 |
| 学习中 | 黄色样式,下划线文本 | 正在学习 |
| 已跳过 | 黑色样式,删除线文本 | 有意跳过 |
| 待处理 | 默认样式 | 尚未开始 |
| 移除 | 褪色样式(用于团队自定义) | 从视图中移除(团队功能) |
来源: src/lib/resource-progress.ts8-14 src/components/FrameRenderer/FrameRenderer.css51-103
来源: src/lib/resource-progress.ts51-81 src/components/TopicDetail/TopicProgressButton.tsx121-151
当用户将某个主题标记为已完成、进行中或已跳过时
TopicProgressButton 组件触发进度更新updateResourceProgress 函数会带主题信息和所需的进度状态被调用renderTopicProgress 函数进行更新refreshProgressCounters 刷新来源: src/components/TopicDetail/TopicProgressButton.tsx121-151 src/lib/resource-progress.ts51-82
系统使用 CSS 类来在路线图节点上视觉指示进度状态
来源: src/lib/resource-progress.ts302-330 src/lib/resource-progress.ts345-367
进度数据以以下格式的键存储在本地存储中
${resourceType}-${resourceId}-${userId}-progress
存储的值是一个 JSON 对象,包含
来源: src/lib/resource-progress.ts241-264
系统使用各种 DOM 选择器查找路线图中代表主题的元素
这些元素根据进度状态进行定位和样式设置。
来源: src/lib/resource-progress.ts266-300 src/lib/resource-progress.ts302-330
系统跟踪并显示进度统计信息
这些计数器显示在用户界面中,并在进度更改时更新。
来源: src/lib/resource-progress.ts383-506 src/components/ResourceProgressStats.astro13-52
TopicDetail 组件是一个弹出窗口,点击后显示主题的详细信息。它包括
来源: src/components/TopicDetail/TopicDetail.tsx37-628
TopicProgressButton 组件提供了用于更改主题进度状态的用户界面
来源: src/components/TopicDetail/TopicProgressButton.tsx20-263
进度统计信息在用户界面中显示,包括
来源: src/components/ResourceProgressStats.astro13-52
系统还支持基于团队的进度跟踪
来源: src/components/TeamVersions/TeamVersions.tsx20-230
用户可以使用 ProgressShareButton 组件与他人分享他们的进度,该组件
来源: src/components/UserProgress/ProgressShareButton.tsx8-76
对于已登录用户,进度与服务器同步
/v1-update-resource-progress/v1-get-user-resource-progress 从 API 获取来源: src/lib/resource-progress.ts57-82 src/lib/resource-progress.ts143-194 src/lib/resource-progress.ts196-239
用户进度系统是 roadmap.sh 的核心功能,帮助用户跟踪他们的学习历程。它结合了客户端存储和服务器同步,提供了直观的用户界面组件用于更新进度,并在路线图和最佳实践上可视化进度。该系统还支持基于团队的进度跟踪和进度分享功能。