重构个人网站并启用新域名

· 10 min read

我在 2021 年底决定开始写博客,那时的首要目标是低成本地完成站点搭建并尽快开始发布文章。于是我直接使用了 Jekyll 框架并部署在GitHub Pages。这个方案的优点是 Jekyll 非常容易上手且对博客类型网站支持很好,结合 GitHub Action 部署简单且完全免费。另外由于我对我的设计能力完全没有信心,于是使用了 mvp.css 这个只需写页面结构,无需编写 CSS 即可获得美观样式的方案。

现在回过头来看,这个方案很成功,让我快速的把博客搭建起来并持续写了 20 多篇博客。

当前方案的不足

不过这两年多使用下来,这个方案也有一些不足之处:

重构的契机

不过我一直说服自己博客最重要的是持续输出内容,而不是折腾各种酷炫的技术和好看的主题。因此我给自己设定了需要同时满足三个条件才能考虑博客的重构。它们分别是:

今年,压死骆驼的最后一根稻草终于出现了🤣。那就是 squoosh cli 不再维护了。这导致其只支持 Node.js v16。而 v16 版本的生命周期在 2023 年 9 月就结束了。于是我在站点构建时又多了个步骤:切换 Node.js 版本到 v16。在这样切换了几次后,我终于下定决心要进行重构了。

新的方案

近几年流行的前端框架之多,既有 Nextjs 这种最流行的大众之选,也有我个人最喜欢的 Remix,甚至还有很多小众但各具特色的框架,简直让我犯了选择困难症。不过考虑到博客是典型的重内容、轻交互的网站类型,我最终选择了 Astro 这个后起之秀。毕竟其官网的介绍就是 “The web framework for content-driven websites”。

Astro 的功能很全面,但有两个特性对静态站点 (SSG) 特别有用。一个是 Content Collections 特性:提供了以类型安全 (type-safety) 的方式定义和验证任意文档类型。另一个是 astro:assets 特性:可以在站点构建时自动压缩和裁剪图片。

关于博客的样式,我本来想简单选个主题完事,但后来觉得自己的博客还是应该有自己的风格,用了主题后反而不便于调整修改。于是用 tailwindcss 完成了初版的样式设计。

还有一个重要改变是网站托管从 GitHub Pages 迁移到了 Cloudflare Pages。这个改变主要是考虑到未来有些功能会需要后端服务的支持,必须选择一个支持服务端渲染的托管环境。而这样的托管环境,开发体验最好的是 Vercel 和 Cloudflare Pages。我最终选择了 Cloudflare Pages。原因是 Vercel 虽然也提供了很慷慨的免费额度,但一不小心也可能出现刷爆信用卡的情况

重构的收益

经过这次重构,在技术和内容这两方面都获得了很多益处。

技术方面

内容方面

除了技术方面的改进。这次重构在内容方面也做了一些调整优化。主要集中在以下方面:

过渡方案

重构后的站点启用了新域名,这就涉及到了如何让用户平滑过渡到新站点的问题。 由于有人已经收藏了或是通过 RSS 订阅了原站点,因此将原站点下线或直接重定向到新站点并不是一个好的选择。 在未来一段时间内,原网站仍将更新博客文章,但新发布的文章只有摘要信息和对应的新站点的链接,以便引导用户至新网站。

去原站点看看

现在你所访问的已经是重构后的站点了。如果你想去原站点看看,请访问 https://bojieyang.github.io