LAT: 37.7749° N LONG: 122.4194° W
calendar_today 2025-05-15 schedule 预计阅读 3 分钟 folder 前端
前端选型

个人网站技术栈选型:静态站点生成器对比

从个人博客的实际需求出发,横向对比 Astro、Hugo、11ty、Hexo、VitePress 等主流静态站点生成器。从构建性能、内容管理、组件化能力和部署体验四个维度做出最终技术选型。

场景定义

需求特征:

  • 内容驱动(文章、个人介绍、项目展示)
  • 静态部署(Vercel / GitHub Pages / Cloudflare Pages)
  • 轻量快速,SEO 友好
  • 有一定自定义设计空间

不需要:

  • 后端数据库
  • 用户登录系统
  • 复杂的实时交互

主流方案一览

技术栈语言/生态构建速度设计自由度学习成本社区活跃度
AstroJS/TS★★★★★高(增长快)
HugoGo极快★★★☆☆高(成熟)
11tyJS★★★★☆低-中
HexoJS★★☆☆☆中(中文社区强)
VitePressVue★★★☆☆
JekyllRuby★★★☆☆下降中
Next.js (Static)React★★★★★极高
Nuxt (Static)Vue★★★★★

详细对比

1. Astro

定位: 内容驱动的现代静态站点框架

核心理念: Islands Architecture — 页面默认零 JS,只在需要交互的”岛屿”加载脚本。

优势:

  • 写法接近原生 HTML,上手几乎没有门槛
  • 原生 Markdown/MDX 支持(Content Collections)
  • Tailwind 一行命令集成
  • 可按需引入 React/Vue/Svelte 组件(但不强制)
  • 构建产物极轻,Lighthouse 评分高

劣势:

  • 生态相对年轻(2022 年 1.0),插件数量不如 Hugo
  • 不适合重交互应用

示例 — 一个页面组件:

---
// src/pages/index.astro
const title = "你好,我是 Yang"
const posts = await Astro.glob('../content/blog/*.md')
---

<html lang="zh-CN">
<head>
  <title>{title}</title>
</head>
<body class="bg-slate-900 text-white">
  <h1 class="text-4xl font-bold">{title}</h1>
  <p>喜欢探索,拥抱 AI 编码</p>

  <ul>
    {posts.map(post => (
      <li>
        <a href={post.url}>{post.frontmatter.title}</a>
      </li>
    ))}
  </ul>
</body>
</html>

感受: 就像在写 HTML,但有组件化和数据能力。


2. Hugo

定位: 构建速度最快的静态站点生成器

核心理念: 用 Go 模板语法组织内容,极致构建性能。

优势:

  • 构建速度无敌(上千篇文章毫秒级)
  • 单二进制文件,无 Node.js 依赖
  • 主题生态丰富
  • 内置图片处理、多语言、分类系统

劣势:

  • Go 模板语法不直观({{ .Title }} / {{ range }} / {{ partial }}
  • 自定义组件和交互效果较麻烦
  • 想脱离主题自己设计需要深入理解其模板系统

感受: 需要学 Go 模板语法,逻辑和展示混在一起,可读性一般。


3. 11ty (Eleventy)

定位: 最简单灵活的静态站点生成器

核心理念: 零配置、不绑定框架、模板语言自选。

优势:

  • 极简——核心概念很少
  • 支持多种模板语言(Nunjucks / Liquid / Markdown / JS)
  • 不引入任何客户端框架
  • 数据处理灵活

劣势:

  • 没有内置组件系统(要靠模板 include/partial)
  • 样式方案自己搭(Tailwind 需手动配置)
  • 文档风格偏”参考手册”,新手容易迷路

感受: 介于 HTML 和模板引擎之间,灵活但一切要自己组装。


4. Hexo

定位: 快速搭建博客的工具

核心理念: 选主题、写 Markdown、一键部署。

优势:

  • 中文社区强,教程多
  • 主题一键切换,快速出效果
  • 纯写作体验好

劣势:

  • 自定义设计受限于主题结构
  • 想做个人展示页(非纯博客)比较别扭
  • 技术架构偏老,生态活跃度在下降

感受: 写博客很舒服,但做个人展示页设计自由度低。


5. VitePress

定位: Vue 驱动的静态文档站点生成器

核心理念: 以 Markdown 为核心,Vue 组件增强。

优势:

  • Vue 生态内最简单的 SSG 方案
  • 热更新极快(基于 Vite)
  • 默认主题即可用,适合文档/技术博客
  • 可在 Markdown 里直接用 Vue 组件

劣势:

  • 默认 UI 是”文档风格”,做个人展示页需要大量覆盖样式
  • 绑定 Vue 生态
  • 自定义布局比 Astro 繁琐

感受: 文档站很省心,但做个人展示页有点”工具味”太重。


场景匹配决策树

你的需求是什么?

├─ 纯写博客,不关心设计 → Hugo / Hexo

├─ 技术文档站 → VitePress

├─ 个人展示 + 博客,想自定义设计
│   ├─ 喜欢极简,自己掌控一切 → 11ty
│   └─ 想要现代开发体验 + 轻量产物 → Astro ✓

└─ 已有 React/Vue 项目,顺便加个博客 → Next.js / Nuxt

最终选择:Astro

为什么在这个场景下选 Astro:

  1. 设计自由度最高 — 没有框架的”味道”强加给你,完全自己设计
  2. 学习成本最低 — 会 HTML 就能写,--- 之间放数据逻辑,外面写模板
  3. 炫技空间大 — 可以纯 CSS/JS 做动效,不受框架约束
  4. Markdown 原生 — docs/ 下的文章零配置变页面
  5. 产物最轻 — 默认零 JS,加载速度打满分
  6. Vercel 部署丝滑 — 官方适配,push 即部署

一句话:Astro 是”我只想做个好看的网站”这个需求的最优解。


参考链接