这个官网展示了一堆项目。如果每个项目的信息都硬编码在页面里,加一个项目要改 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 页面按分类浏览。
这不是技术问题,是信息密度问题。首页的任务是让人快速记住你,不是穷举你做过的所有事。
加一个项目的完整流程
- 打开 data/projects.json
- 往数组里加一个对象
- 保存,推送
构建时页面会自动重新渲染,首页统计数字会变,分类筛选会自动包含新分类。不需要碰任何组件代码。