🗂️ 海量项目分类导航系统¶
项目背景¶
NextStack 平台追踪了 **215+ 个开源技术项目**的版本演进,涵盖从 AI/ML、Spring 生态、分布式系统到云原生技术等多个技术领域。随着追踪项目数量的持续增长,原有的平面导航结构已无法满足用户快速定位和浏览项目的需求。
本系统旨在为海量开源项目提供一个**可扩展、易用、美观**的分类导航解决方案。
核心特性¶
🎯 智能分类体系¶
- 23个主分类: 覆盖AI、Spring生态、分布式系统、数据库、云原生等主要技术领域
- 灵活子分类: 支持二级分类,如Spring生态下的核心框架、微服务组件、数据访问等
- 动态扩展: 基于JSON配置,新增项目或分类无需修改代码
📊 三种视图模式¶
1. 网格视图(默认)¶
- 卡片式展示各技术分类
- 每个卡片显示图标、名称、描述、项目数量
- 鼠标悬停时卡片上浮,提供视觉反馈
- 点击"查看全部"弹窗展示完整项目列表
2. 列表视图¶
- 表格形式列出所有项目
- 显示项目名称、所属分类和操作按钮
- 支持按字母排序,便于查找特定项目
3. 树形视图¶
- 层级展示分类和项目关系
- 支持折叠/展开节点
- 清晰呈现分类层级结构
🔍 实时搜索¶
- 输入项目名称或分类名称进行搜索
- 实时过滤显示匹配结果
- 支持模糊匹配,提高查找效率
📈 数据统计¶
- 热门分类面板: 展示项目数量最多的前5个分类
- 项目计数徽章: 每个分类卡片上显示包含的项目总数
- 快速跳转: 点击统计卡片直接跳转到对应分类
🎨 现代化设计¶
- 响应式布局: 完美适配桌面端、平板和移动设备
- 深色模式支持: 自动适配用户主题偏好
- 流畅动画: 过渡、悬停、展开等交互都有精心设计的动画效果
- 视觉层次: 使用颜色、阴影、间距构建清晰的信息层次
技术架构¶
数据层¶
文件: /docs/zh/release_note/categories.json
{
"categories": {
"分类ID": {
"name": "分类名称",
"icon": "图标emoji",
"description": "分类描述",
"projects": ["项目1", "项目2"],
"subcategories": {
"子分类ID": {
"name": "子分类名称",
"projects": ["项目3", "项目4"]
}
}
}
},
"metadata": {
"version": "1.0.0",
"lastUpdated": "2025-01-19",
"totalProjects": 215,
"totalCategories": 23
}
}
特点: - 纯JSON格式,易于维护和扩展 - 支持无限层级的子分类 - 包含元数据用于版本管理
表现层¶
JavaScript: /docs/javascripts/category-navigation.js (17KB)
核心类: CategoryNavigation
主要方法: - loadCategories(): 异步加载分类数据 - render(): 渲染主界面 - filterCategories(): 搜索和过滤 - changeView(): 切换视图模式 - expandCategory(): 展开分类详情
CSS: /docs/stylesheets/category-navigation.css (15KB)
样式特点: - CSS Grid 布局,自适应列数 - Flexbox 实现内部元素对齐 - CSS 变量支持主题切换 - 关键帧动画提升交互体验
集成方式¶
在 MkDocs 页面中添加容器:
JavaScript 自动检测容器并初始化。
分类体系说明¶
顶级分类(23个)¶
| 分类 | 项目数 | 说明 |
|---|---|---|
| 🤖 AI & 机器学习 | 23 | LLM、AI框架、智能应用 |
| 🍃 Spring 生态系统 | 40+ | Spring全家桶及相关项目 |
| 🔄 分布式系统 | 20+ | RPC、服务网格、分布式事务 |
| ☁️ 云原生技术 | 30+ | K8s、容器、CI/CD、可观测性 |
| 💾 数据库技术 | 20+ | 缓存、SQL/NoSQL、数据处理 |
| 📨 消息队列 | 6 | Pulsar、RocketMQ、Kafka客户端 |
| ⚙️ 中间件 | 9 | Jetty、工作流引擎、调度框架 |
| 🔧 开发工具 | 15+ | 构建、测试、代码质量工具 |
| 📚 Java 类库 | 12 | 常用工具库 |
| 🎨 前端技术 | 8 | UI框架、组件库 |
| 其他 | 30+ | 网络、安全、文档、IoT等 |
二级分类示例¶
**Spring 生态系统**下的子分类: - 核心框架 (3个项目) - 微服务组件 (18个项目) - 数据访问 (4个项目) - 集成与消息 (5个项目)
**云原生技术**下的子分类: - Kubernetes生态 (8个项目) - 容器技术 (8个项目) - CI/CD (4个项目) - 可观测性 (10个项目)
使用场景¶
场景1: 新用户探索平台¶
- 访问技术版本追踪页面
- 浏览"热门分类"了解平台覆盖范围
- 点击感兴趣的分类查看项目列表
- 选择项目查看版本发布历史
场景2: 查找特定项目¶
- 在搜索框输入项目关键词(如"spring")
- 实时筛选显示相关项目和分类
- 点击项目名称直接访问
场景3: 技术选型调研¶
- 切换到"列表视图"查看所有项目
- 按分类筛选相关技术栈
- 对比同类项目的活跃度和版本更新频率
- 查看项目详情做出技术决策
场景4: 系统管理员维护¶
- 编辑
categories.json添加新项目 - 根据技术属性归类到对应分类
- 刷新页面验证显示效果
- 无需重新部署即可生效
维护指南¶
添加新项目¶
- 打开
/docs/zh/release_note/categories.json - 找到合适的分类
- 在
projects数组中添加项目名称 - 保存文件
示例:
添加新分类¶
{
"new-category": {
"name": "🆕 新分类",
"icon": "🆕",
"description": "新分类的描述",
"projects": ["project1", "project2"]
}
}
添加子分类¶
{
"category-id": {
"name": "主分类",
"icon": "📦",
"description": "主分类描述",
"subcategories": {
"sub-category-id": {
"name": "子分类名称",
"projects": ["project3", "project4"]
}
}
}
}
重新分类项目¶
- 从原分类的
projects数组中删除项目 - 添加到新分类的
projects数组 - 保存并验证
性能优化¶
已实施优化¶
- ✅ 懒加载: 弹窗内容按需渲染
- ✅ JSON轻量化: 数据文件仅10KB
- ✅ CSS Grid: 高性能布局引擎
- ✅ 防抖搜索: 减少不必要的渲染
- ✅ 事件委托: 减少事件监听器数量
性能指标¶
- 首次加载时间: < 100ms
- 搜索响应时间: < 50ms
- 视图切换时间: < 100ms
- 内存占用: < 5MB
浏览器兼容性¶
| 浏览器 | 最低版本 | 测试状态 |
|---|---|---|
| Chrome | 90+ | ✅ 完全支持 |
| Firefox | 88+ | ✅ 完全支持 |
| Safari | 14+ | ✅ 完全支持 |
| Edge | 90+ | ✅ 完全支持 |
| 移动浏览器 | 现代版本 | ✅ 完全支持 |
未来规划¶
v1.1 (计划中)¶
- 添加项目标签系统(语言、框架、用途)
- 支持按标签过滤
- 项目收藏功能
- 自定义分类视图
v1.2 (计划中)¶
- 项目活跃度指标
- 版本更新频率统计
- 趋势分析图表
- 推荐系统(基于浏览历史)
v2.0 (规划中)¶
- AI 驱动的智能分类
- 自然语言查询
- 多维度筛选(Star数、更新时间、语言等)
- 个性化推荐
贡献指南¶
欢迎贡献代码和建议!
贡献方式¶
- Fork 仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
分类建议¶
如果您发现: - 某个项目被错误分类 - 某个分类项目过多需要拆分 - 需要新增分类
请提交 Issue 或 PR,我们会及时review。
许可证¶
本项目遵循 MIT License。
联系方式¶
- 微信: 搜索"中间件源码"
- GitHub: ktyhub/thinking-in-code
- 网站: www.ktyhub.com
最后更新: 2025-01-19
版本: 1.0.0
维护者: NextStack Team