梦畔栖萤
返回文章列表
2494 字13 分钟浏览量: -

Misthaven:我给自己写了一个 Astro 博客主题

折腾#Astro / Misthaven / 博客主题 / 独立开发 / 阅读体验

前情提要

今年五月,我写过两篇文章记录这个博客的搭建:第一篇选了 Astro、套上现成主题、配好 Nginx,第二篇给静态博客接上了 Artalk 评论。

那时候我的想法其实很简单:先把博客搭起来再说。

但用着用着,有个念头越长越大:

这个博客看起来还行,但是里边那么多花里胡哨的内容,我真的用得着吗?每次向上游 cherry-pick 同步的时候,处理这么多冲突真的值得吗?

用得越久,我越觉得,与其继续在别人的主题上修修补补,不如干脆自己做一个。

更重要的是,现在还有 Codex。

我不用先专门学完整套前端,也不用先把 Astro 从头啃一遍。我可以先去想清楚自己到底想要什么,再把实现交给 AI。

于是,就有了 Misthaven。我自己设计的博客主题,现在,我就是上游!

我想要一个什么样的博客

不讲废话:我想要一个能安安稳稳读东西的地方。

说个难听一点的,当我搜索一些小众问题的时候,看到有些个人博客刚好有一个能解决我燃眉之急的文章,我欣喜若狂。

点进去一看,我的眼睛直接就被乱七八糟的看板娘、鼠标拖尾特效、文章背景的粒子特效给干爆了,CPU 风扇也在向我诉说它的痛苦,音乐播放器组件的音乐也开始自动播放了(最关键的是 tmd 满音量播放,我耳朵都爆了)。

当然了,对于大部分的开源项目来说,功能多,可以尽可能满足绝大多数用户的选择。随着热度的增长,设置项也变得繁多,这是无法避免的。现在的博客主题大多很「能干」:侧边栏挂着音乐播放器、日历、访客地图,首页塞满轮播图和渐变卡片。功能一个比一个全,但这正是我认为的,本来读者想要阅读一篇文章,但注意力都先被这些无关紧要的东西吸引走了。

我不想做这样的博客。答案很简单:简洁,能读,别的都往后放。

少一点视觉噪音,让注意力先落在文章上;页面不需要完全没有动画,但动画不应该抢戏;功能也不是越少越好,只是每个放进去的东西,至少应该有一个让我觉得它需要存在的理由。

用现成主题那几个月,我摸清了那些不适来自哪儿:配色是别人定的,我只能在一小撮色号里挑;功能也是别人定的,用不上的天天在眼前晃,想要的却没有。而我想做的页面越来越具体,具体到没法用「改改配置」表达——与其把审美塞进别人的框架,不如自己搭一个。

Misthaven 是什么

GitHub 项目页是这样写的:

A calm place for stories and ideas.

意思就是,Misthaven 是一个简洁、安静的 Astro 博客主题。

它以舒展的留白、克制的色彩和舒适的排版,让内容自然成为焦点。这里适合记录想法、故事与日常生活,也适合那些愿意让文字慢慢沉淀的人。

叠个甲先:设计是我提供的,代码由 Codex 编写。

我负责想清楚它应该长什么样、哪里不舒服、哪些东西该留下,Codex 负责把这些想法做出来。

所以如果你要问“这个主题是不是我自己一行一行写出来的”,那当然不是。

但如果你问我“它为什么长这样”,那基本上每个地方我都能给出自己的理由。

看起来简单,做起来一点都不简单

真的开始自己设计以后,我才发现,这并非容易的事情。

到底多大的字号读起来舒服?

正文应该多宽?

背景是纯白,还是稍微带一点颜色?

深色模式里的正文到底要多亮,才不会刺眼,又不会显得发灰?

代码块和正文之间应该差多少?

标题上下要留多少空间?

这些东西单独看都很小,但只要其中一个地方不对,整篇文章读起来就会有一种很微妙的不舒服。

而且最麻烦的是,这种“不舒服”经常很难直接说出来。

有时候我只是觉得页面哪里怪怪的,然后盯着看半天,最后才发现可能是正文稍微大了一点,或者某个灰色和背景的对比太强。

于是改一点,刷新,再看。不对,再改。

这大概也是我这次做主题以后最大的感受之一:

以前用别人的主题,我看到一个页面只会说“这个好看”或者“这个不好看”。现在轮到自己做,我必须继续往下问:

到底为什么不好看?

该有的都有

作为一个博客,该有的东西,它一样没少。

  • 读文章:目录跟着滚动高亮当前章节,能看阅读时间,读完了有上一篇/下一篇,翻到底还能一键回到顶部。
  • 找内容:搜索,外加文章列表的排序(最新 / 最多阅读)。搜索只搜标题、标签和描述——文章就几十篇,全文检索的成本和收益不成正比。
  • 看状态:明暗主题跟随系统也能手动切;超过 30 天的文章,会在顶部提醒你可能过时。
  • 聊天:评论接的是 Artalk,还能显示每篇文章的浏览量。
  • 写作:五种提示框、粒子剧透、代码块的行号和折叠、图片写上 alt 自动变成图注。
  • 过日子的:RSS、sitemap、自定义 404、隐私政策页、响应式布局、界面文案中英双语。

有一件事我特意没做:分类页和标签页。标签只作为文章上的装饰,不做成可点击的入口——如果点进去只有一个孤零零的列表,那这个入口就没解决问题,只是把问题转手给了读者。要做就做好,没做好就先不做。

阅读体验比功能数量重要

这次做主题的时候,我在文章页花掉的时间明显比其他地方多。

正文大小、行高、标题之间的距离、链接颜色、引用块、代码块、图片、表格……

这些东西看起来都不像什么“新功能”,甚至大多数读者可能根本不会注意到。

但我觉得这反而是最重要的部分。

一个博客最常发生的事情,本来就是有人点进来,然后从头到尾读完一篇文章。

所以比起“能不能在侧边栏放我正在追的番”“能不能直接播放音乐”“能不能挂一张自己的照片”,我更愿意把时间拿去纠结一段代码到底怎么显示更舒服。

这些功能当然不是不能做。

只是对我来说,没有必要。

如果以后我真的有一天觉得某个功能能改善这个博客,我当然会加。

但我不想为了让功能列表看起来更长,就给页面塞进去一堆东西。

设计对我来说比功能数量更重要。

一个简单但认真设计过的页面,我会更愿意一直用下去。

给 AI 智能体优化的一小部分

我特地给 Misthaven 做了一些 agent 优化,测试页面用的是 Is Your Site Agent-Ready?

每一页都有一份给 AI 看的版本:访客要是主动要 Markdown,拿到的就是一份干干净净的正文,没有导航和脚本的噪音,还顺便知道这篇文章大约要花多少 token。你用浏览器打开,看到的还是排版好的页面,什么都不变。

说到底还有个私心:如果哪天 AI 要引用我的文章,我希望它引用的是我写下的原话,而不是从一堆 HTML 标签里拼出来的碎片。

写在最后

这篇文章其实早该写了:本来打算跟着主题仓库一起发布,结果一路拖到了现在。主要是有很多自己想做的乱七八糟的项目在不断卡着,有时候突然有灵感了,就会动一动某个项目。

我还很感慨,AI 越来越强大了,我可以即使的将自己的想法实现,而不用花时间专门去为了做一件小事,学习几门编程语言。

Misthaven 现在当然还谈不上完成,以后肯定还会继续改,也肯定会有现在没发现的问题,但我已经挺满意了,看到偶尔有几个用户点的 Star,我也很高兴,有人喜欢我的设计。每个间距、每处圆角、每次动画的时长,我都知道它为什么是那个数字。

如果你也在用别人的主题,心里有那种说不清的不适感,先别急着换,试着把那点不适说清楚。说得清楚,你就有了一份需求;说不清楚,那多半只是新鲜感过了。

想先看看效果的话,主题有一个演示站;想拿它搭自己的博客,GitHub 仓库在这里。提 issue 和 PR 都欢迎。别忘了点个 Star 谢谢喵。

参考链接

站外

文章信息

许可协议CC BY-NC-SA 4.0

评论