这个是 25 级计算机应用 1 班的班级博客~ 使用 Hugo 静态站点生成器和 Stack 主题搭建,部署于 Vercel,记录班级学习与生活的点滴 📚
-
🎨 Stack 主题:简洁美观的卡片式布局,支持暗色模式
-
🔍 全站搜索:内置搜索功能,快速定位文章
-
🗂️ 归档与分类:按时间归档、分类和标签云组织内容
-
💬 Waline 评论:集成 Waline 评论系统,支持表情互动与访问统计
-
📱 响应式设计:完美适配桌面端和移动端
-
🚀 Vercel 部署:推送自动构建,极速全球访问
-
📄 短链接风格:文章永久链接使用
/p/:slug/简洁格式 -
🔎 SEO 优化:自动生成
sitemap.xml、robots.txt,输出 Open Graph / Twitter Card / JSON-LD 结构化数据(WebSite + BlogPosting),可逐页覆写标题、描述、关键词、封面图等
| 类别 | 技术 |
|---|---|
| 静态站点生成器 | Hugo 0.165.0 (Extended) |
| 主题 | hugo-theme-stack |
| 评论系统 | Waline |
| 部署平台 | Vercel |
| CI/CD | GitHub Actions |
| 许可证 | 代码 MIT / 文章内容 CC BY 4.0 |
class-blog/
├── .github/workflows/ # GitHub Actions CI 配置
├── archetypes/ # 文章原型模板(含 SEO 字段)
├── assets/ # 静态资源(favicon 等)
├── content/ # 内容目录
│ ├── page/ # 独立页面(归档、搜索)
│ └── post/ # 博客文章
├── layouts/ # 主题覆盖
│ ├── 404.html # 自定义 404 页
│ ├── robots.txt # 自定义 robots.txt 模板(动态生成)
│ └── _partials/head/ # head 覆盖(继承主题并追加 JSON-LD)
├── static/ # 直接复制到站点的静态文件
├── themes/ # Hugo 主题(Stack 主题作为 submodule)
├── hugo.toml # Hugo 站点配置(含 SEO 默认值)
├── vercel.json # Vercel 部署配置
├── .gitmodules # Git 子模块配置
├── LICENSE # MIT 许可证(代码)
└── LICENSE-CONTENT # CC BY 4.0 许可证(文章内容)
-
Hugo Extended >= 0.165.0(需支持 SCSS 编译)
-
Git(用于初始化子模块)
- 克隆仓库并初始化子模块
git clone <repo-url>
cd class-blog
git submodule update --init --recursive- 本地构建 & 启动本地开发服务器(验证)
hugo --gc --minify # 构建
hugo server # 启动本地服务器构建产物输出至 public/ 目录。
使用 Hugo 提供的 archetype 快速创建文章:
hugo new post/my-post-slug.md文件名与 slug 建议使用小写英文、数字和连字符(如
my-post-slug.md),避免使用中文或空格。
+++
title = '文章标题'
date = '2026-09-01T10:00:00+08:00'
draft = false
description = '一段简短的文章摘要,用于卡片副标题、meta description 与 JSON-LD'
categories = ['分类名称']
tags = ['标签1', '标签2']
author = '你的笔名或姓名'
+++
这里写文章正文...作者字段说明:author 字段会在文章列表卡片和文章详情页顶部显示(可在 hugo.toml 中关闭)。如果文章不填写 author,会按以下顺序回退:文章 front matter 的 author → 站点配置中的 params.article.defaultAuthor → 站点配置中的 params.author。
-
标准 Markdown 语法
-
代码高亮(支持行号)
-
数学公式(LaTeX)
-
Mermaid 图表
-
图片画廊
-
自定义 Shortcodes(Bilibili、YouTube 视频等)
站点已内置 SEO 能力,开箱即用:
| 自动输出 | 说明 |
|---|---|
sitemap.xml |
Hugo 内置生成,配置位于 hugo.toml 的 [sitemap] 块 |
robots.txt |
由 Hugo 动态生成(enableRobotsTXT = true),Sitemap 字段自动取自 baseURL |
index.xml (RSS) |
主页 + 各 section 启用 RSS 输出([outputs] 配置) |
| 自定义 404 页 | layouts/404.html,返回首页引导,避免硬 404 |
| Meta 标签 | 由 Stack 主题的 head.html 输出(description / keywords / canonical 等) |
| Open Graph | 由主题的 head/opengraph/include.html 输出;文章页额外输出 article:\* |
| Twitter Card | 由主题的 head/opengraph/provider/twitter 输出 |
| JSON-LD | 项目 layouts/_partials/head/jsonld.html 追加:所有页输出 WebSite,content/post/ 下的文章页再叠加 BlogPosting |
在 content/post/*.md 的 front matter 中可逐页覆写:
+++
title = '我的文章'
description = '这篇文章讲了什么……' # 不填则自动取摘要
keywords = ['关键词1', '关键词2']
author = '你的名字' # 会在卡片和文章页显示
image = '/images/cover.png' # 相对站点根的路径
robots = 'index, follow' # 设为 'noindex' 可阻止收录
+++tags 和 categories 会自动作为 keywords 与 article:tag / article:section 输出。author 字段会在文章列表和详情页中可见地显示。
编辑 hugo.toml 中 [params] 块下的 description / keywords / author / image / robots 即可,所有页面会以此为默认值。
layouts/_partials/head/head.html 覆盖了 Stack 主题的同名 partial,并在末尾追加了 JSON-LD(head/jsonld.html)。如需调整 JSON-LD 内容,修改 head/jsonld.html 即可;其它 head 行为调整也请在项目级 head.html 中进行,避免直接改动主题目录(themes/hugo-theme-stack/)。
项目已配置 vercel.json,连接 Vercel 后推送至仓库即可自动部署。关键配置:
-
构建命令:
hugo --gc --minify -
输出目录:
public -
Hugo 版本:0.165.0 (Extended)
-
安装命令:
git submodule update --init --recursive(拉取主题)
推送到仓库或提交 PR 时,会自动触发构建检查,确保站点能正常编译。
-
baseURL:站点根 URL -
title:站点标题 -
copyright:页脚版权文字 -
params.sidebar.subtitle:侧边栏副标题 -
params.footer.since:页脚起始年份
在 hugo.toml 中配置作者显示行为:
[params.article]
# 是否在文章卡片和详情页显示作者(默认 true)
showAuthor = true
# 全局默认作者(当文章 front matter 中未写 author 时使用)
defaultAuthor = ""作者字段的解析顺序:
- 文章 front matter 中的
author字段 params.article.defaultAuthor(站点配置)params.author(站点配置)
设置 showAuthor = false 可全局关闭作者显示。
在 hugo.toml 中配置:
[params.comments]
enabled = true
provider = "waline"
[params.comments.waline]
serverURL = "https://waline.mantoujun-lab.com"欢迎班级同学投稿或完善项目!提交 PR 前请确保本地构建通过 (hugo --gc --minify)。
你可以扫描下方的微信赞赏码,来支持项目的开发与维护 ☕
本项目采用双重许可:
- 源代码(Hugo 模板、脚本等程序工件)基于 MIT License 开源。
- 文章内容(
content/目录下的所有文字、图片等)基于 CC BY 4.0 License 共享。
