路线图系统是 roadmap.sh 平台的核心功能,负责提供结构化的学习路径,帮助开发者掌握软件开发中的各种技术和角色。本文档解释了路线图在代码库中如何构建、渲染和呈现给用户。
有关通过路线图跟踪用户进度的信息,请参阅用户进度系统。有关构建和部署平台的详细信息,请参阅构建和部署系统。
路线图系统提供交互式的可视化指南,概述了在软件开发不同领域中熟练掌握所需的路径、技术和技能。每个路线图都由其内容结构、渲染方法和用户交互能力定义。
来源:src/pages/[roadmapId]/index.astro:1-187,src/lib/roadmap.ts1-196
路线图系统结合使用 Markdown 文件存储元数据和 JSON 文件存储内容,共同构建完整的路线图。
每个路线图都由一个包含重要元数据的 Markdown 文件(带有 frontmatter)定义。
frontmatter 定义了标题、描述、渲染尺寸、SEO 信息和相关路线图等属性。它还指定了要使用的渲染器。
来源:src/lib/roadmap.ts17-77 src/data/roadmaps/python/python.md1-111 src/data/roadmaps/backend/backend.md1-94 src/data/roadmaps/frontend/frontend.md1-111 src/data/roadmaps/devops/devops.md1-94
每个路线图的实际内容存储在 JSON 文件中,其中包含每个主题的结构化信息。
{
"topicId": {
"title": "Topic Title",
"description": "Topic description text...",
"links": [
{
"title": "Resource Title",
"url": "https://example.com",
"type": "article|video|course"
}
]
}
}
这些文件包含构成路线图内容的所有学习资源、描述和结构。
来源:public/roadmap-content/python.json1-814 public/roadmap-content/backend.json1-424
该系统支持两种主要的路线图渲染方法,由路线图 frontmatter 中的 renderer 属性决定。
这是大多数路线图使用的主要渲染方法。它是一个现代的交互式渲染器,使用基于 JSON 的结构来渲染路线图。
一种支持以不同格式渲染路线图的替代渲染器。
渲染逻辑由路线图页面组件处理,该组件根据路线图的配置选择合适的渲染器。
来源:src/pages/[roadmapId]/index.astro:148-163
当用户点击路线图中的一个主题时,会显示主题详情组件,展示该主题的详细信息。
主题详情组件在客户端加载并提供:
来源:src/pages/[roadmapId]/index.astro:100-106,src/components/TopicDetail/TopicDetail.tsx
路线图头部组件提供路线图的导航和上下文信息。
头部显示:
来源:src/components/RoadmapHeader.astro1-168 src/pages/[roadmapId]/index.astro:109-121
该系统使用一组实用函数来加载和管理路线图数据:
getRoadmapIds():检索所有可用的路线图 IDgetRoadmapById(id):通过 ID 加载特定路线图getRoadmapsByTag(tag):查找具有特定标签的路线图getRoadmapFaqsById(id):加载特定路线图的常见问题解答这些函数负责加载路线图文件,提取其内容和元数据,并准备显示。
路线图加载过程使用动态导入,根据路线图 ID 加载相关文件。
来源:src/lib/roadmap.ts94-170 src/pages/[roadmapId]/index.astro:36-43
每个路线图都可以包含相关内容:
这些相关内容帮助用户在相互关联的主题之间导航,并找到额外的学习资源。
来源:src/pages/[roadmapId]/index.astro:180-183,src/lib/roadmap.ts164-170
路线图系统是一个复杂的功能,旨在以交互式、用户友好的方式呈现复杂的学习路径。它将静态内容与动态渲染和用户交互相结合,以创建全面的学习体验。该系统的模块化架构允许轻松添加新路线图和修改现有路线图,使其成为寻求扩展技能的开发人员的灵活而强大的工具。