无 JavaScript 也能发现内容:文章筛选的渐进增强
以文章分类和标签筛选为例,拆解如何先交付完整静态列表,再用少量脚本增强 URL 条件读取与结果反馈。
示例文章:本文是工程内容样例,可直接替换;其中的做法用于说明当前仓库的内容模型。
静态站点没有运行时数据库,不等于没有数据质量问题。标题过长、分类拼错、日期倒置或别名冲突,都会在构建后变成可访问的错误页面。最可靠的处理方式是让构建尽早失败。
字段类型、长度、URL 格式和日期关系适合放进内容 Schema。错误应该指向具体文件与字段,让编辑者不必从最终页面反推原因。
一篇文章的分类格式正确,并不代表分类真实存在。引用白名单、正式 slug 与别名全局唯一等规则,需要读取完整集合后统一校验。
const published = posts
.filter((post) => !post.data.draft)
.sort(byPublishDateThenSlug);
页面若直接查询集合,很容易在不同路由重复过滤与排序。统一的页面模型可以保证草稿不会泄漏,日期展示一致,相关文章算法也只有一个事实源。
未知分类不应该自动归入“其他”,无效 canonical 也不应该悄悄改写。对内容仓库来说,明确失败通常比带着错误上线更便宜。
以文章分类和标签筛选为例,拆解如何先交付完整静态列表,再用少量脚本增强 URL 条件读取与结果反馈。
用共享标签、同分类、发布日期和稳定 slug 构造确定性的相关文章排序,避免随机推荐与构建结果漂移。
用五类可审计的决策记录,把一次能演示的 AI 原型转化为团队可以理解、验证并持续维护的产品实现。