← 文章

用 Astro 重建我的个人站点

把个人站点从「又一个半成品」变成「真的会一直用」的东西,花了我不少时间。这次用 Astro 重建,核心诉求只有三个:内容用本地 Markdown 管、构建出来是纯静态、长期维护成本低。

为什么是 Astro

我看过 Next.js、Hugo、Eleventy。Next.js 太重,对于一个不需要后端交互的站点来说是杀鸡用牛刀;Hugo 快但模板语法让我每次都得查文档;Eleventy 灵活却要自己拼太多积木。

Astro 的「内容集合(Content Collections)」正好命中痛点:用 TypeScript schema 给每类内容定义字段,写文章时如果漏了必填项,构建直接报错。对长期维护来说,这种约束比自由更友好。

const articles = defineCollection({
  loader: glob({ base: './src/content/articles', pattern: '**/*.md' }),
  schema: z.object({
    title: z.string(),
    date: z.coerce.date(),
    category: z.enum(['技术', '学习笔记', '读书观影', '长文专题']),
  }),
});

三种内容,三种节奏

这个站点不是单一的「博客」,而是混血:

  • 文章:成篇长文,要排版、要目录、要上下篇;
  • 作品:项目复盘,有背景、职责、工具、链接;
  • 思考:随笔碎片,三两句话即可,贵在即时。

它们共用同一套标签与归档机制,但写作门槛完全不同。思考区降低了「想写点什么」的心理成本——不用凑成一篇文章才能发布。

一点体会

建站工具选错了会一直绊脚,但选对了也只是开始。真正难的,是之后十年里持续往里面填东西。

工具负责让这件事「不难开始」,剩下的交给习惯。

评论