建站小结 2.0

目录

经过不懈的努力,博客 2.0 也是初具雏形。初代博客陪我走过了一年的时间,现在,我想要赋予这个站点更强的玩具属性。即使我写不出文章,也能对博客进行各种各样的改动,满足我对各种新奇技术的探索。

关于 Cloudflare

博客 2.0 的最大功臣,非“赛博菩萨”Cloudflare 莫属,我在一个平台上就完成了几乎所有的作业。如果哪天,Cloudflare 提供了代码托管的功能,我甚至可以不需要 GitHub。

目前的站点的结构如下:

项目框架服务提供
域名解析/Cloudflare
CDN 与防护/Cloudflare
博客本体AstroCloudflare Pages
评论系统twikoo-cloudflareCloudflare Workers + Cloudflare D1 + Cloudflare R2
图床无(未来或许是 PicGo)Cloudflare R2

Cloudflare CDN 的可访问性不好,这是事实,但是这并不是 Cloudflare 的问题,我们没有理由奢求更多。最极端的情况,如果 Cloudflare CDN 在中国大陆完全不可访问,关闭 Cloudflare 的代理也能够缓解,不是什么大问题。

Cloudflare 太过慷慨,以至于我很想为它做些什么,可惜 Cloudflare 目前不支持 .top 域名,要不然我一定要转移域名到 Cloudflare,以示感谢。

关于 Astro

一年前的我非常排斥 Node.js,因为江湖中总是流传着它的传说:“比黑洞更深不见底”的 node_modules,感人的站点生成速度,还有版本管理地狱。但是在我与 Go/Hugo 相处的一年中,我确实也感受到了 Node.js 的优点,繁荣的生态、便利的包引入、大量的开发者与社区讨论。在一番挣扎后,我决定亲身体验它的好坏,毕竟调查过后才有发言权。

相比于最主流的 Hexo,我选择了新生的 Astro。作为后来者,Astro 在设计上就强调了性能与易用,技术细节还有待了解,但至少目前的站点确实能让我感受到所言非虚。同时,作为新项目,Astro 的生态和社区却意外成熟,这是开发者们对它的肯定。

在基础的使用体验上,我必须承认,Hugo 太过优秀,以至于找不到对手。毫秒级的站点生成时间,100MB 的轻巧体积,模块式的部件替换,还有便利的主题功能。如果你是一位“建站新手”或“极简主义者”,我觉得 Hugo 一定能让你满意。相比之下,Astro 笨重又缓慢。对于现在的站点,占地 700MB、编译时间 3 分钟,简直不像是一个时代的产物。即使我使用 Bun 来提升效率,也改变不了 Astro 的先天缺陷。

相应的,我得到的是极强的拓展性与可玩性。Astro 的“UI 无关”理念,能让我随意取得他人的优秀组件与设计,而不必担心前端框架的移植。在 Hugo 与 Blowfish 中需要自行获取的图标,在 Node.js 与 Astro 这里,只需简单的一句 import。唯一的小遗憾,就是我心心念念的 Bangumi 组件,没办法直接引入,最后还是要靠我自行实现。npm 里的 bangumi 包,迷惑性真是太强了。

关于 Fuwari

讨论主题前,我必须要吐槽 Astro 对主题功能的设计。Astro 提出的主题功能,耦合度极高,不如说它是“框架”、“手脚架”。所有的修改与个性化,都直接在原有代码上执行,而不是像 Hugo 一样,提供一种 Overlay 功能,能让用户在不触碰原有代码的情况下实现修改。对于熟悉 Git 操作的用户,还可以通过 cherry-pickrebase 进行同步,而对于我这种只会 addcommitpush 三板斧的普通用户,想要同步上游真是令人头疼。

最后,我选择将主题添加为子模块,然后手动同步所需的代码,勉强解决了与主题上游同步的问题。

说回主题,我选择了 Astro 社区中比较出名的 Fuwari,它在设计与性能方面表现都相当不错,也难怪使用者众多。我上手 Fuwari 的第一感受就是:“它真好看”,大量的过渡动画、统一的圆角和块状设计、还有自定义主题色,比 Blowfish 精致太多。

Fuwari 最大的问题是开发进度缓慢,尤其是作者相当坚持自己的美学,很多小细节都希望自己设计。慢工出细活我倒是不反感,但是一些最基本的功能,例如评论系统,都没有完成的情况下,缓慢的开发确实让我有些心急。

博客的很多功能,都来自社区的二次开发,包括评论系统和友链页,感谢他们的贡献,让 Fuwari 的可用度高了很多。

关于 Twikoo

站点的评论区是变动最频繁的部分,目前我的选择是 twikoo-cloudflare,这也是 Cloudflare 生态下的唯一选择。其他的评论系统,例如 MiniValine 或基于 Cloudflare Workers 实现的原生评论系统,从可持续性的角度看,都不如 twikoo-cloudflare。

非常诡异的一点是,Waline 和 Twikoo 作为最流行的两大评论系统,竟然没有数据迁移的直接途径。最后不得已,我选择手工录入先前的评论,可能会出现意料外的问题,但是能保全数据,也无所谓了。

Astro + Fuwari 之后?

相比于先前对迁移的热情,我必须要说,翻新一个已经存在大量数据的站点是一件很耗费时间和精力的事情;而且 Astro 与 Fuwari 的组合也足够好玩,实在是没有必要再“搬运”我的博客。

曾经我对 Zola 有着谜之执着,但是在听说 Zola 开发者的独裁与固执后,这份执念也消散了。一个流行的软件,一定是适应大多数人的需求、符合大部分人习惯的优秀产品,Zola 声称自己比 Hugo 优秀,结果在功能性和生态远远不及,实在是很难说服我这位前 Hugo 用户再去尝试 Zola。

在决定使用 Bun 进行开发前,我首先了解的是 Deno,毕竟“Deno, the next-generation JavaScript runtime”的口号很响亮,Deno 还附带了官方开发的框架 Fresh。我就曾计划使用 Deno + Fresh 的组合,进行一次全新的、跨时代的站点建设,可惜我高估了自己的实力。没有了主题之类的预设功能,从零开始开发一个站点真是寸步难行。

虽说计划失败了,但是不代表我会就此放弃,目前我唯有期待,Fresh 也能有简化开发的功能出现。

评论

有新的想法?欢迎向我发送邮件,或使用下方留言板进行留言。

留言板
留言可见性

公开留言会整理后展示,私人消息仅站长可见。

必填。最多 2000 字。支持 Markdown 语法,但不支持预览。

必填。公开展示时将使用这个昵称。

如需回复某条评论,请填写其序号。

可填写个人站点 URL,公开展示时会附加于昵称之上。

页首