跳转至

🗂️ 海量项目分类导航系统

项目背景

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 页面中添加容器:

<div class="category-navigation-container"></div>

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: 新用户探索平台

  1. 访问技术版本追踪页面
  2. 浏览"热门分类"了解平台覆盖范围
  3. 点击感兴趣的分类查看项目列表
  4. 选择项目查看版本发布历史

场景2: 查找特定项目

  1. 在搜索框输入项目关键词(如"spring")
  2. 实时筛选显示相关项目和分类
  3. 点击项目名称直接访问

场景3: 技术选型调研

  1. 切换到"列表视图"查看所有项目
  2. 按分类筛选相关技术栈
  3. 对比同类项目的活跃度和版本更新频率
  4. 查看项目详情做出技术决策

场景4: 系统管理员维护

  1. 编辑 categories.json 添加新项目
  2. 根据技术属性归类到对应分类
  3. 刷新页面验证显示效果
  4. 无需重新部署即可生效

维护指南

添加新项目

  1. 打开 /docs/zh/release_note/categories.json
  2. 找到合适的分类
  3. projects 数组中添加项目名称
  4. 保存文件

示例:

{
  "ai-ml": {
    "projects": [
      "existing-project",
      "new-project-name"  // 新增项目
    ]
  }
}

添加新分类

{
  "new-category": {
    "name": "🆕 新分类",
    "icon": "🆕",
    "description": "新分类的描述",
    "projects": ["project1", "project2"]
  }
}

添加子分类

{
  "category-id": {
    "name": "主分类",
    "icon": "📦",
    "description": "主分类描述",
    "subcategories": {
      "sub-category-id": {
        "name": "子分类名称",
        "projects": ["project3", "project4"]
      }
    }
  }
}

重新分类项目

  1. 从原分类的 projects 数组中删除项目
  2. 添加到新分类的 projects 数组
  3. 保存并验证

性能优化

已实施优化

  • 懒加载: 弹窗内容按需渲染
  • JSON轻量化: 数据文件仅10KB
  • CSS Grid: 高性能布局引擎
  • 防抖搜索: 减少不必要的渲染
  • 事件委托: 减少事件监听器数量

性能指标

  • 首次加载时间: < 100ms
  • 搜索响应时间: < 50ms
  • 视图切换时间: < 100ms
  • 内存占用: < 5MB

浏览器兼容性

浏览器 最低版本 测试状态
Chrome 90+ ✅ 完全支持
Firefox 88+ ✅ 完全支持
Safari 14+ ✅ 完全支持
Edge 90+ ✅ 完全支持
移动浏览器 现代版本 ✅ 完全支持

未来规划

v1.1 (计划中)

  • 添加项目标签系统(语言、框架、用途)
  • 支持按标签过滤
  • 项目收藏功能
  • 自定义分类视图

v1.2 (计划中)

  • 项目活跃度指标
  • 版本更新频率统计
  • 趋势分析图表
  • 推荐系统(基于浏览历史)

v2.0 (规划中)

  • AI 驱动的智能分类
  • 自然语言查询
  • 多维度筛选(Star数、更新时间、语言等)
  • 个性化推荐

贡献指南

欢迎贡献代码和建议!

贡献方式

  1. Fork 仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

分类建议

如果您发现: - 某个项目被错误分类 - 某个分类项目过多需要拆分 - 需要新增分类

请提交 Issue 或 PR,我们会及时review。

许可证

本项目遵循 MIT License。

联系方式


最后更新: 2025-01-19
版本: 1.0.0
维护者: NextStack Team