为什么我选择 Astro 作为博客框架
· 5 分钟阅读 · -
在搭建这个博客之前,我认真对比了市面上主流的静态站点生成器。最终选择了 Astro,这个决定背后有一些值得分享的思考。
需求分析
一个博客站点真正需要什么?我列出了核心需求:
- 构建速度 — 写完文章后能快速预览
- 加载性能 — 访客打开页面的速度
- 内容优先 — Markdown/MDX 的支持质量
- 部署简单 — 一键部署到 CDN
- 可扩展性 — 未来可能加入互动功能
主流方案对比
Next.js
Next.js 是一个优秀的全栈框架,但对博客来说有些重了:
- 默认发送大量 JavaScript
- 构建时间较长
- App Router 的学习曲线陡峭
如果你的博客需要动态功能(评论系统、用户认证等),Next.js 是好选择。但纯内容站点用它,属于杀鸡用牛刀。
Hugo
Hugo 构建速度极快,用 Go 编写:
- 优势:构建速度快到几乎无感知
- 劣势:模板语法不够直观,生态系统较小
Hugo 适合内容量极大的站点(上千篇文章),但个人博客的构建时间差异可以忽略。
Astro
Astro 的设计哲学和我的需求完美契合:
// Astro 的核心特性:零 JS 默认输出
// 只有当你需要交互时,才加载 JavaScript
关键优势:
- Islands Architecture:页面默认是纯 HTML,交互组件按需加载
- Content Collections:类型安全的内容管理
- 多框架支持:可以在 Astro 中使用 React/Vue/Svelte 组件
- 优秀的 DX:热更新快,错误提示清晰
实际体验
迁移到 Astro 后,我注意到了一些切实的改进:
| 指标 | Next.js | Astro |
|---|---|---|
| 首次构建 | ~15s | ~3s |
| 首页 JS 大小 | ~180KB | ~5KB |
| Lighthouse 评分 | 85-95 | 98-100 |
| 开发热更新 | ~1s | ~200ms |
结论
技术选型没有标准答案,关键看你的具体需求。对于内容驱动的站点,Astro 在性能和开发体验之间找到了很好的平衡点。
如果你正在考虑搭建博客,建议先明确自己的核心需求,再做选择。不要因为某个框架流行就选择它,适合的才是最好的。
评论
加载评论中...