静态博客的魅力在于:写作者是 Markdown,读者拿到的是纯 HTML。没有数据库,没有运行时,部署即上线。

为什么选 Astro

它在构建时把组件渲染成静态页面,只在需要交互的地方注入 Island。结果是首屏秒开,SEO 友好,服务器压力几乎为零。

npm create astro@latest
npm run build
# 产出 dist/ 直接丢进 nginx

内容集合管理文章

Astro 的 content collections 用 schema 约束 frontmatter,写文章就像填表:

const posts = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    date: z.coerce.date(),
    category: z.enum(['技术', '随笔']),
    excerpt: z.string(),
  }),
});

部署到子域

构建完把 dist/ 传到服务器,加一段 Nginx 配置,证书复用已有的通配符 SSL 即可:

server {
    listen 443 ssl;
    server_name blog.example.com;
    root /var/www/blog;
    # 证书复用已有的通配符证书
}

把复杂留给自己,把简单交给读者。