这个官网展示了一堆项目。如果每个项目的信息都硬编码在页面里,加一个项目要改 JSX、重新排版、还得担心漏掉某个地方。

所以第一件事就是把数据抽出来:data/projects.json。

一条记录长什么样

每 个项目就是数组里的一个对象。关键字段:

  • id:唯一标识,用作 React key
  • name / tagline:标题和一句话简介
  • description:稍长的补充说明,可选
  • category:分类,用来做筛选和分组
  • tech:技术栈标签数组
  • status:active / wip / archived
  • featured:是否出现在首页精选区
  • links:demo 和 repo 链接,都可以留空

为什么 category 不做成枚举

因为分类是会变的。今天你觉得 AI 和量化是两个方向,明年可能多出一个内容生成。

如果用枚举,加分类就要改类型定义、改筛选逻辑、改样式。而现在分类只是数据里的一个字符串,页面会自动把所有出现过的分类收集起来生成筛选按钮。

结构上的约束越少,改起来越自由。

featured 的意义

首页不应该铺满所有项目。项目一多,访客第一屏看到的就是一堵墙,什么都记不住。

featured 这个布尔值就是一道人工筛选:只有最值得看的几个项目出现在首页,其他的进 /projects 页面按分类浏览。

这不是技术问题,是信息密度问题。首页的任务是让人快速记住你,不是穷举你做过的所有事。

加一个项目的完整流程

  1. 打开 data/projects.json
  2. 往数组里加一个对象
  3. 保存,推送

构建时页面会自动重新渲染,首页统计数字会变,分类筛选会自动包含新分类。不需要碰任何组件代码。