卡片生成系统是 GitHub Readme Stats 的核心组件,它将用户数据转换为视觉上吸引人的 SVG 卡片。该系统处理从接收 API 请求到生成可嵌入 GitHub README 文件中的 SVG 图像的整个过程。
有关特定卡片类型的信息,请参阅统计卡片、仓库卡片、热门语言卡片、WakaTime 卡片和Gist 卡片。
卡片生成过程遵循所有卡片类型的一致模式
来源:api/index.js13-138 api/pin.js12-105
工作流程包括以下主要步骤
系统支持多种卡片类型,每种类型都有自己的 API 端点
来源:api/index.js1-10 api/pin.js1-10
每种卡片类型都遵循相同的模式:
所有卡片共享通用组件和渲染实用程序
基础卡片组件为所有卡片类型提供基础,包括:
该系统包括用于卡片生成的几个实用程序:
| 实用工具 | 目的 |
|---|---|
flexLayout() | 水平或垂直排列元素并提供适当的间距 |
createLanguageNode() | 创建编程语言的视觉表示 |
iconWithLabel() | 结合图标和文本标签用于统计 |
getCardColors() | 检索基于主题的颜色并进行适当的覆盖 |
renderError() | 在出现问题时生成错误卡片 |
wrapTextMultiline() | 处理描述的文本换行 |
来源:src/common/utils.js53-65 src/common/utils.js74-81 src/common/utils.js92-110 src/common/utils.js267-326 src/common/utils.js360-401 src/common/utils.js411-436
每种卡片类型都有一个专用抓取器,用于从适当的来源检索数据
来源:api/index.js68-78 api/pin.js57
抓取器处理:
主题通过颜色系统应用于卡片
getCardColors() 函数管理主题应用:
系统包括强大的错误处理功能
来源:api/index.js121-137 api/pin.js88-104 src/common/utils.js23-40 src/common/utils.js360-401
错误处理系统
卡片生成系统通过查询参数支持广泛的定制
| 参数类别 | 示例 | 目的 |
|---|---|---|
| 内容控制 | hide, show, include_all_commits | 控制显示的数据 |
| 视觉样式 | title_color, text_color, bg_color | 自定义卡片外观 |
| 布局 | card_width, border_radius, line_height | 调整卡片尺寸 |
| 定位 | locale | 设置卡片语言 |
| 动画 | disable_animations | 控制动画效果 |
来源:api/index.js14-41 api/pin.js13-28
为了优化性能和降低 API 调用限制,系统实现了一种缓存策略
来源:api/index.js80-92 api/pin.js59-71 src/common/utils.js443-477
缓存系统:
此缓存策略平衡了数据的新鲜度与性能和速率限制之间的关系。