建站手记
从零开始,造一座自己的数字花园
一个个人博客不只是页面集合。它是你如何组织思考、保存上下文,并与未来的自己持续对话的公开接口。
个人网站最迷人的地方,不是它能展示多少信息,而是它允许一个人决定信息应该以怎样的速度被看见。
社交平台擅长制造“现在”。一条内容出现、被转发,然后很快沉下去。博客更像一座花园:旧文章可以修剪,新的理解能够嫁接到原来的枝干上,内容不必因为发布日期过去就失去生命。
先决定为什么写
技术选型很容易变成一种拖延。框架、主题、部署平台都值得讨论,但它们应该服务于一个更简单的问题:这个空间最终要保存什么?
我希望这里能够容纳三种内容:
- 来自真实项目的技术实践;
- 对产品、工具和工作方法的判断;
- 无法被归类,但值得长期保留的生活观察。
当这个边界清楚之后,信息架构也自然变得简单:文章、主题、关于,以及一个不会干扰阅读的搜索入口。
把内容当成项目的核心数据
文章使用 Markdown 保存,并通过带类型约束的内容集合进入页面。标题、摘要、日期、主题和阅读时间都必须经过构建检查。这样做不是为了把写作工程化,而是让错误在发布前出现。
const writing = defineCollection({
loader: glob({ base: './src/content/writing', pattern: '**/*.{md,mdx}' }),
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.coerce.date(),
tags: z.array(z.string()),
}),
});
页面只是内容的不同视图。首页负责发现,归档负责回溯,主题页负责建立横向联系,文章页负责让读者安静地读完。
设计应该退后半步
这个博客选择了偏编辑出版的视觉语言:大的衬线标题、克制的颜色、明确的分隔线,以及足够舒展的正文。它需要有个性,但个性不能以牺牲阅读为代价。
好的博客设计不是不断提醒读者“这个网站被设计过”,而是让内容显得本来就应该以这种方式存在。
暗色模式、移动端导航、键盘焦点和代码块并不是最后再补的功能。它们和字体、颜色一样,都是阅读体验的一部分。
留下可以继续生长的接口
第一版不需要拥有所有功能。它需要的是稳定的骨架:清晰的内容模型、可以被验证的页面路由、可维护的设计令牌,以及能够逐步增加内容的目录结构。
接下来,这座花园会增加主题索引、搜索、RSS 和更多真实文章。重要的不是一次性“完成”它,而是让每次更新都比上一次更容易。