个人博客方案
个人博客方案
个人博客
概念
名词
| 名称 | 全称 | 渲染时机 | 特点 |
|---|---|---|---|
| SSR | Server-Side Rendering | 运行时服务器渲染 | 页面首屏快,SEO 友好 |
| CSR | Client-Side Rendering | 浏览器端渲染 | 常规 Vue SPA 模式 |
| SSG | Static Site Generation | 构建时渲染成静态 HTML | 无需服务器、速度极快、适合文档/博客类网站 |
很多人都以为 Vue 只能做 CSR(客户端渲染)或 SSR(服务端渲染),其实现在 Vue 生态已经支持 SSG(静态站点生成) 了,只是实现方式 不在 Vue 本体,而是在 Nuxt 等框架层面
元数据frontmatter
像 Hugo、Hexo、Jekyll 这类博客框架,需要知道除了正文以外的“元数据”,比如:
- 文章标题(title)
- 日期(date)
- 标签(tags)
- 分类(categories)
- 作者、摘要等
这些信息就放在一个叫 Front Matter(前置区块) 的区域里。
博客框架推荐的写法(带元信息)
---
title: "个人博客"
date: 2025-10-10
tags: ["博客", "Markdown", "静态网站"]
---
## 从 markdown 生成网页
这是我的第一篇笔记。这个“上半部分的三条横线 --- 到 ---”
就是 Front Matter,告诉博客系统一些“文章属性”。
---(三条横线)如果放在正文中间,确实是代表一个水平分割线(horizontal rule)。当
---出现在文件开头时,它就被特殊识别为 “Front Matter”(前置数据区) 的边界。这不是 Markdown 标准的一部分,而是静态博客生成器扩展的语法。
位置 作用 是否显示在网页上 文件开头的 --- ... ---Front Matter(元数据块) ❌ 不显示(仅用于配置) 文件中间的 ---水平分割线 ✅ 显示为一条线
输入数据:
用静态网页生成器
这些工具能自动把你的 Markdown 文件转成网页(HTML + CSS)。
| 工具 | 语言 | 特点 | 适合人群 |
|---|---|---|---|
| Hugo | Go | 超快、配置简单 | 想快速上线、喜欢轻量的人 |
| Jekyll | Ruby | GitHub Pages 原生支持 | 想免费托管在 GitHub 上的人 |
| Hexo | Node.js | 插件多、主题多 | 前端基础好一点的人 |
| Astro | JS/TS | 现代框架、支持 React/Vue/Svelte | 想做现代化、可交互网站的人 |
| VuePress / VitePress | Vue.js | 支持vue,是vue插件,解析MD | |
| next.js/react | React** | Next.js是React 的通用应用框架(SSR、SSG、ISR、Edge Rendering等) | |
| Nuxt | Vue.js | Vue 的通用应用框架(SSR、SSG、SPA一体) | |
| RSpress | RUST | Rspress快如闪电的静态站点生成器 | |
| Docusaurus | |||
| Nextra | 使用 Next.js 和 MDX创建精美的网站 |
无论哪种生成器,大体流程是:
- 你写笔记(
.md文件);- 博客框架读取这些 Markdown;
- 按模板(主题)渲染成 HTML;
- 最终生成静态网页(可部署到 GitHub Pages、Vercel、Netlify 等)。
我要自己解析Markdown
你要做的是这样一个流程:
.md 文件(Markdown 内容)
↓
Markdown 引擎(解析器)
↓
HTML 片段(可嵌入到你的网站模板)
↓
网页(你自己设计结构 / 样式 / JS)选择一个 Markdown 引擎
取决于你用什么语言写博客系统,这里给你几个主流选择:
| 语言 | Markdown 渲染库 | 支持语法高亮 / KaTeX | 备注 |
|---|---|---|---|
| Node.js | markdown-it | ✅ 插件多、可扩展性强 | 最推荐 |
| Python | markdown | ✅ 有丰富扩展 | 简洁稳定 |
| Go | goldmark | ✅ Hugo 同款 | 高性能 |
| Rust | comrak | ✅ 支持 GFM | 稍重 |
Java 主流 Markdown 解析库对比
| 库名 | Maven 名称 | 特点 | 支持扩展 |
|---|---|---|---|
| Flexmark-Java | com.vladsch.flexmark:flexmark-all | ✅ 最强大,功能最全(推荐) | 支持 GFM、表格、代码高亮、数学公式等 |
| commonmark-java | org.commonmark:commonmark | 轻量级、速度快 | 功能基础,适合简单解析 |
| pegdown(旧) | 已弃用 | ⚠️ 不推荐 | 老项目,已不维护 |
推荐使用 flexmark-java —— 它几乎等于 Java 版的 markdown-it
Hugo
Hugo 是一个用 Go 编写的静态网站生成器,其速度和灵活性都经过优化。凭借其先进的模板系统和快速的资源管道,Hugo 可以在几秒钟甚至更短的时间内渲染出一个完整的网站。
项目位置:https://github.com/gohugoio/hugo/
VitePress
VitePress 可以说就是 “Hexo 的现代化进化版 + 完全可嵌入 Vite/Vue 生态的轻框架”。 如果你已经熟悉 Vue 或 Vite,那它几乎是最自然、最干净的选择。
VitePress 是一个静态网站生成器(SSG),旨在构建快速、以内容为中心的网站。简而言之,VitePress 会获取您用Markdown编写的源内容,应用主题,然后生成可轻松部署到任何地方的静态 HTML 页面。
Hexo
Hexo 本质上是一个Node.js 驱动的静态博客生成框架」。
它的目标是:让你用 Markdown 写文章,一键生成整站。
也就是说,它是“面向写作者”的工具,不是面向“网站开发者”的框架
Hexo 有三层核心结构:
内容层: content/*.md
模板层: themes/<your-theme>/
引擎层: Hexo 核心逻辑 (Node + EJS)你能改的部分,主要在:
✅ 内容层(你自己的 Markdown)
✅ 主题层(可改模板样式、布局)
⚠️ Hexo 内部逻辑(很难改)
简单说:Hexo 是“你可以改主题,但不能改发动机”的系统。
Astro
内容驱动网站的网络框架
Astro 为世界上最快的营销网站、博客、电子商务网站等提供支持。
Astro是一个用于构建内容驱动型网站(例如博客、营销和电商)的Web 框架。Astro 以其开创性的全新前端架构而闻名,与其他框架相比,它能够降低 JavaScript 的开销和复杂性。如果您需要一个加载速度快且 SEO 表现优异的网站,那么 Astro 就是您的理想之选。
很高级很复杂!
Astro 的定制空间非常大 —— 它几乎给了你“自己造轮子”的自由, 但帮你免去了“打包、路由、优化、渲染”这些底层琐事。
| 层级 | 定制空间 | 示例 | 是否推荐自己改 |
|---|---|---|---|
| 内容层 | 🟢 完全自定义 | 直接写 Markdown / MDX / JSON / API 请求 | ✅ 100% 自由 |
| 页面结构 | 🟢 完全自定义 | 任意 .astro 文件定义页面模板 | ✅ |
| 组件层 | 🟢 任意框架混用 | React/Vue/Svelte 组件混搭 | ✅ |
| 样式系统 | 🟢 任意方案 | Tailwind / Sass / UnoCSS / CSS Modules | ✅ |
| 构建管线 | 🟡 可定制 | 可自定义 Vite 配置、插件 | ⚠️ 不建议新手修改太多 |
| 路由机制 | 🔵 文件系统路由(但可重写) | 动态路由 / catch-all | ✅ 可改 |
| 数据源 | 🟢 高度开放 | 从本地 / CMS / API / GitHub / Notion 拉数据 | ✅ |
| SSR / 混合渲染 | 🟡 有支持 | 可接入 Cloudflare / Vercel / Node 适配器 | ⚠️ 进阶使用 |
从“HTML 到模板到组件”这一层,几乎 100% 可定制。 底层构建逻辑(比如 Vite、渲染管线)虽然能改,但一般没必要。
| 想法 | Astro 能做到吗? | 实现方式 |
|---|---|---|
想自定义文章 URL 结构,比如 /blog/yyyy/mm/title | ✅ | 在 src/pages/blog/[...slug].astro 处理路径 |
| 想自定义文章渲染(比如替换 Markdown 渲染器) | ✅ | 用 remark 或 rehype 插件 |
| 想换成自己写的模板引擎(而不是 Astro 的语法) | ⚙️ 可行 | 自定义 Vite loader(进阶) |
| 想写插件扩展功能(自动生成 sitemap、RSS) | ✅ | 用官方 integrations API |
| 想接入评论系统 / 访客统计 | ✅ | 前端引入组件或脚本即可 |
| 想做全动态网站(像 Next.js 那样) | ✅ | Astro 4 支持 SSR 模式 |
| 你关注的点 | Astro 的表现 |
|---|---|
| 定制 HTML 模板 | ✅ 完全可控 |
| 自定义样式 / JS | ✅ 任意方式 |
| 控制路由结构 | ✅ 文件路由 + 动态路由 |
| 控制 Markdown 渲染细节 | ✅ 可换渲染器、扩展 remark 插件 |
| 写前端交互组件 | ✅ 用 React/Vue/Svelte 等 |
| 完全自由度 | 🔥 几乎前端全栈自由度最高的静态引擎之一 |
怎么选择
| 目标 | 推荐 |
|---|---|
| ✅ 想做博客 / 技术文档 / 个人主页(以 Markdown 为主) | → VitePress |
| ✅ 想做个人网站 / 作品集 / 有交互组件 / 动态功能 | → Astro |
| ✅ 想完全自由控制结构和样式,甚至未来扩展成复杂站点 | → Astro |
核心理念对比
| 框架 | 核心定位 | 重点 |
|---|---|---|
| VitePress | “文档网站生成器” | 把 Markdown 变成漂亮的 Vue 网站 |
| Astro | “现代静态网站引擎” | 把任意内容(Markdown、API、CMS)编译成 HTML |
VitePress:写文章、做知识库最舒服;
Astro:做网站、博客、作品集最灵活。
自由度对比(非常关键)
| 层级 | VitePress | Astro |
|---|---|---|
| Markdown 渲染 | ✅ 自由 | ✅ 自由 |
| 页面模板 | ⚠️ 限定(文档结构) | ✅ 完全自定义 |
| 导航 / 布局 | ⚠️ 通过 config.js 配置 | ✅ 手写组件或模板 |
| 样式系统 | ✅ Vue 风格 | ✅ 任意:Tailwind / SCSS / CSS Modules |
| 插件生态 | ⚠️ 少(主要是文档扩展) | ✅ 丰富(图像优化、RSS、搜索、CMS集成) |
| SSR / 动态功能 | ❌ 静态 | ✅ 支持 SSR & API Routes |
| 用途广度 | 博客 / 文档 | 博客 / 商业站 / 作品集 / CMS 网站 |
输入数据:
评论
评论加载中……