为什么我把网站换成了 Astro
从折腾构建配置到只写内容,我为什么最后选了静态站点生成器。
1 分钟建站Astro
上一版网站我用了框架加服务端渲染,结果每次写文章都要先修一遍依赖。
现在这套方案简单得多:内容是 Markdown,构建时编译成纯 HTML。
它到底省了什么
- 没有运行时,页面加载不需要等 JavaScript
- 图片在构建时自动转成 WebP / AVIF
- 部署只需要一个静态文件托管
一段代码看看效果
// 内容集合的 schema,写错字段构建时就会报错
export const blog = defineCollection({
loader: glob({ pattern: '**/*.md', base: './src/content/blog' }),
schema: z.object({
title: z.string(),
date: z.coerce.date(),
}),
});
写错了字段,构建直接失败,不会等到线上才发现。
代价是什么
你得接受「构建完就固定了」这件事。需要实时数据、登录、评论这类功能时,还得另想办法。
对我来说这笔买卖划算。