让内容在构建时失败:静态博客的校验边界
从字段长度、分类白名单到别名冲突,说明如何把静态内容错误提前到构建阶段,并保持页面消费契约稳定。
示例文章:以下交互讨论用于验证页面能力,不代表已经发生的用户研究结论。
渐进增强不是“禁用 JavaScript”,而是先保证基础任务不依赖它。文章列表的基础任务是浏览与进入文章,所以服务器生成的 HTML 应该包含全部已发布内容和普通聚合链接。
读者可以从文章列表查看全部条目,也能通过分类与标签链接进入独立页面。即使筛选脚本加载失败,发现路径仍然完整。
小脚本读取经过白名单验证的 URL query,隐藏不匹配条目并更新结果说明。它不请求接口,也不创建第二份文章数据。
增强失败后最安全的回退是移除隐藏状态、展示全部文章,并用礼貌提示说明筛选暂时不可用。错误不应该让首屏变成空白。
筛选条件不能只靠颜色表达。当前条件、结果数量和清除操作都应有文字;键盘焦点保留在触发项,结果变化通过 live region 轻量宣布。
从字段长度、分类白名单到别名冲突,说明如何把静态内容错误提前到构建阶段,并保持页面消费契约稳定。
一次范围控制复盘:哪些看似标准的博客功能被移出首发,以及这些取舍如何改善性能、可访问性和维护成本。
用五类可审计的决策记录,把一次能演示的 AI 原型转化为团队可以理解、验证并持续维护的产品实现。