← 所学
用 Astro 内容集合搭起「此间」
此间用 Astro 搭建。选它的理由很简单:内容站,纯静态,写 Markdown 就能发布,没有多余的运行时。
内容集合(Content Collections)
文章不放 src/pages/ 里硬排,而是交给内容集合管理。src/content.config.ts 里定义两套集合:notes(所学)和 life(生活),各自声明 frontmatter 的结构:
const notes = defineCollection({
loader: glob({ pattern: '**/*.md', base: './src/content/notes' }),
schema: z.object({
title: z.string(),
date: z.coerce.date(),
tags: z.array(z.string()).default([]),
draft: z.boolean().default(false),
}),
});
好处是 frontmatter 写错时构建直接报错,比”上线了才发现日期格式不对”体面得多。
一些小设计
- 按年归档:列表页把
getCollection的结果按getFullYear()分组,旧文自然沉底; - 节气标注:文章页日期旁带一个节气,用一张近似日期速查表实现,误差 ±1 天,只作雅致标注用;
- RSS:
@astrojs/rss一页搞定,输出到/rss.xml。
构建产物是纯 HTML + 一点 CSS,Lighthouse 全绿。足够了。