本文档全面概述了 roadmap.sh 平台的架构,解释了其核心系统、它们之间的交互以及技术实现细节。它侧重于应用程序的高层结构、关键组件之间的关系以及整个系统的数据流。
有关单个组件具体实现细节的信息,请参阅本维基中的相应页面。
roadmap.sh 平台围绕多个相互连接的系统构建,这些系统协同工作,为学习新技能和规划职业道路的开发者提供一致的用户体验。
来源
roadmap.sh 平台建立在现代 Web 技术栈之上,专注于静态站点生成和交互式客户端组件。
| 组件 | 技术 | 目的 |
|---|---|---|
| 框架 | Astro | 支持部分水合的静态站点生成 |
| UI 组件 | React | 交互式 UI 元素 |
| 样式 | Tailwind CSS | 实用优先 CSS 框架 |
| 构建工具 | Vite | 快速开发和优化构建 |
| 部署 | GitHub Actions | CI/CD流水线 |
| 服务器 | Node.js | 服务器端渲染和 API 处理 |
| 内容 | Markdown | 内容创作 |
| 图表 | Mermaid | 图表渲染 |
来源
内容系统负责管理和渲染平台上提供的各种类型的内容,包括路线图、最佳实践、指南和问题。
来源
路线图是使用 Markdown 文件(带 YAML frontmatter)和 JSON 文件结合定义,用于视觉呈现。每个路线图都有一个对应的 .md 文件用于定义元数据,以及一个 .json 文件用于定义路线图可视化的结构和布局。
路线图 frontmatter 包含
来源
该平台使用 Astro 进行静态站点生成,并结合 React 用于交互式组件。这种混合方法实现了快速的初始页面加载,并通过渐进式增强提高了交互性。
来源
应用程序中的所有页面都使用一个通用的 BaseLayout 组件,该组件提供基本结构,包括
布局使用槽位(slots)允许页面在特定位置注入内容,例如主要内容区域、页面头部和页脚。
来源
进度跟踪系统允许用户跟踪他们在路线图中的进度,支持认证用户(与服务器同步)和访客用户(本地存储)。
来源
进度数据存储在两个位置
系统包含检查本地缓存是否过期并在需要时从服务器刷新它的机制。
来源
进度跟踪系统通过操作 DOM 来直观地显示路线图可视化中主题的状态
这种视觉反馈帮助用户跟踪已完成的内容和待学习的内容。
来源
该平台使用基于 GitHub Actions 的持续集成和部署工作流,将应用程序构建并部署到 EC2 实例。
来源
构建过程包括以下几个步骤
来源
部署过程使用 GitHub Actions 来
来源
主题详情系统负责显示路线图中特定主题的详细信息。它提供了一个弹出界面,显示内容、资源和进度跟踪选项。
来源
当用户点击路线图中的一个主题时,系统会
对于官方路线图,主题内容以 HTML 文件形式存储并由服务器提供。对于自定义路线图,主题内容从 API 获取。
来源
主题详情界面包含一个进度跟踪按钮,允许用户将主题标记为
此状态随后会传播到进度跟踪系统,并在路线图上直观地反映出来。
来源
身份验证系统提供用户身份识别和授权,用于访问高级功能以及跨设备同步进度。
来源
身份验证流程
来源
该平台包含多个分析和跟踪系统,用于监控用户行为并改善用户体验。
来源
该平台采用多种变现策略,包括广告、高级课程和团队订阅。
来源
roadmap.sh 平台建立在现代、基于组件的架构之上,强调静态站点生成与动态客户端交互。该系统旨在提供无缝的用户体验,同时高效地管理和向用户交付内容。
主要架构特点包括
这种架构使平台能够高效扩展,同时为学习新技能和规划职业道路的开发者提供丰富的用户体验。