示例文章:这是内容模型的讲解示例。文中的计数与评论仅用于说明用途,当前网站没有实现这些服务。
一篇文章可能经历很多变化:初稿的标题不够准确,文件夹需要重新整理,网址也许要变得更容易阅读。如果每一次变化都被系统当成一篇新文章,积累的数据就会断开。
把身份与名称分开
文章身份可以使用创建时生成的一份 UUID。它不表达标题,也不暗示文章所在的位置,因此不需要随着内容润色而改变。
slug 则负责网址的可读性。它适合简短、稳定的小写英文单词。文件名是本地组织方式,可以与 slug 相同,也可以根据写作习惯选择其他形式。
articleId: 1e7b459c-76c0-4e2b-9d30-b7869d2fb018
slug: permanent-article-identity
title: 文章的名字可以变,身份应该留下
统一意味着来自同一份记录
列表、详情页和未来的计数请求,都应该从文章元数据读取同一份 articleId。浏览器打开页面时只接收它,不负责再生成一份新的标识。
这样的约定让边界更清楚。网址处理展示与导航,文章 ID 处理数据关联。读者仍然看到容易理解的地址,系统也拥有不会被标题变化影响的连接。
复制文章时也要复制约定
新文章可以从旧模板开始,但不能继承旧文章的身份。编辑原文保留 articleId,创建新文重新生成 articleId,二者应当在写作规范中明确区分。
- 字段校验确保每篇文章具备合法标识。
- 全库检查发现被复制的 ID 与重复网址。
- 修改旧 slug 时保留跳转关系。
- 不根据正文内容计算身份,避免一次修订改变所有关联。
这些检查不是为了让写作更复杂,而是让变化不会抹掉连续性。文章可以不断成长,同时始终被识别为同一篇文章。
END OF NOTE
谢谢阅读,愿这些文字带来一点新的想法。