OA OA

2026/5/18

从零搭一个 Mizuki 风的个人博客

记录从选型到上线的全过程:为什么是 Astro,为什么是 Mizuki,以及那些踩过的坑。

更新于 2026/5/18

一直想有一个属于自己的写作空间。不是各种平台上的账号,而是真正意义上属于自己的域名和页面——可以完全控制每一行样式、每一个交互细节。

选型纠结

一开始在两个方案之间摇摆:Hugo 还是 Astro。Hugo 快得离谱,模板生态也成熟,但模板定制起来总有一种”在别人的房子里装修”的感觉。Astro 更接近”从地基开始盖”,灵活性高出不少,而且默认零 JavaScript 的哲学很对我的胃口——一个博客本来就不应该塞满 JS。

最终选了 Astro + MDX + Tailwind CSS 的组合。Mizuki 主题一直是我最喜欢的博客风格,但这次决定不直接 fork,而是参考它的视觉语言自己实现一遍。这个过程本身就是一种学习。

为什么是 Mizuki

Mizuki 给我的感觉是一种舒服的干净。不是极简到冷冰冰的那种干净,而是带点温度的、像一本排版讲究的纸质书。卡片式布局、柔和的阴影、恰到好处的圆角,再加上 Material Design 3 的色彩体系——这些细节组合在一起,让人愿意在页面上多停留一会儿。

架构决策

几个关键选择:

  • Content Collections:用 Zod schema 校验每篇文章的 frontmatter,写错字段会在构建时直接报错,不用担心上线后才发现 typo。
  • Pagefind 搜索:完全静态的搜索方案,构建时生成索引,不需要任何后端服务。
  • 评论和分析预留但不启用:第一版专注于阅读体验,后续再按需接入 Giscus 或 Twikoo。
<article class="grid gap-8 lg:grid-cols-[minmax(0,1fr)_16rem]">
  <div class="prose prose-slate max-w-none dark:prose-invert">
    <slot />
  </div>
  <aside class="lg:sticky lg:top-28">
    <!-- 桌面端侧边栏目录 -->
  </aside>
</article>

部署

部署选择了 Cloudflare Pages。一次 push 自动触发构建和部署,而且免费额度对于个人博客绰绰有余。PUBLIC_SITE_URL 环境变量控制所有 canonical URL、RSS 链接和 sitemap 地址,未来换了域名也只需要改这一个变量就够了。

后续打算

博客上线只是第一步。后面计划逐步加入文章头图、页面动效和一些二次元风格的小装饰——毕竟 Mizuki 的灵魂不只在布局上,还在那些微妙的氛围感里。不过在这之前,先把写作这件事坚持下来才是最重要的。

加油吧。