我之前把 Markdown 当成“写完就能显示”的文件。真正开始做博客之后,才发现内容也需要一个模型:哪些字段必须有,哪些值允许出现,页面怎样拿到它们。
问题:文章只是文件吗
如果每篇文章的标题、日期和标签都靠自己记住,短期没问题,文章一多就会出现格式漂移。有人写 pubDate,有人写 date,列表页最后只能到处写兼容代码。
于是我先把一篇文章看成一条数据,而不是一段文字:frontmatter 是数据,Markdown 正文是内容,页面负责把两者组合起来。
实验:让 schema 先说清楚
我给 collection 加了最小约束:title、description、pubDate、category、status 和 stack。新文章如果缺少标题,或者状态不在允许范围内,构建时就直接失败。
这比上线后才发现页面空了一块更好。错误越靠近输入,越容易修。
证据:页面不再猜数据
首页只负责排序和挑选 featured 文章,卡片只负责展示,详情页负责渲染正文。每个组件拿到的数据形状是稳定的,改文案不会牵动路由,改卡片也不会影响 RSS。
好的内容模型,不是让写作变复杂,而是让重复劳动变少。
下一步
下一步想把“系列”和“关联文章”也放进模型里。先不急着做推荐算法,能让一次学习沿着三四篇记录继续走下去,就已经足够有用了。