个人博客的核心是文字。首页、文章页和归档可以提前生成,让浏览器打开页面时直接得到完整内容。

把工作放在构建阶段

本地构建负责读取文章、整理元数据和生成页面。服务器只需要把 HTML、CSS、JavaScript 和 JSON 文件交给浏览器。

// 浏览器读取已生成的静态索引
const response = await fetch('/search-index.json');
const articles = await response.json();
const matches = articles.filter(article =>
  article.title.includes('设计')
);

交互留在浏览器

主题切换、分类筛选和搜索,不一定需要服务端接口。它们可以从页面或静态索引取得信息,然后在本地完成操作。

保持内容可访问

即使关闭脚本,文章正文与站内链接仍然应该可用。把基础阅读建立在 HTML 上,再用 JavaScript 改善交互。

维护简单的边界

每次更新文章,重新构建并替换站点文件。内容与样式一起发布,避免页面和搜索索引来自不同版本。

一个小站的完整感,往往来自每一个入口都有真实去处、每一种状态都被认真考虑。