静态博客的魅力在于:写作者是 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;
# 证书复用已有的通配符证书
}
把复杂留给自己,把简单交给读者。