
Hexo 博客零基础终极指南:从环境搭建、内容创作到美化部署的全过程详解
KevinEliasSparks本教程旨在提供一套精确、详细、可直接操作的 Hexo 静态博客搭建流程。如果您是技术小白,请严格按照以下步骤操作,您将成功拥有一个高效、美观且维护成本极低的个人网站。
特别注意事项:
1.以下内容默认你拥有国际互联网(Global Internet),区分于GFW 局域网(Internet in Mainland China),如果你没有办法连接国际互联网,你需要确认你的网络至少可以连接上GitHub;如果你实在无法访问GitHub,欢迎使用我的GitHub文件传输网站拉取你需要的内容
2.如果你不准备部署到公网上/无法连接GitHub,可以跳过相应的步骤(仅在本机内网上运行即可),GitHub主要作为中间层用于数据备份和Cloudflare(以下简称CF)同步
🚀 目录
- Hexo 博客框架深入解读
- 环境准备与 Hexo 基础安装(Windows/Mac)
2.1. Node.js 和 Git 必备软件安装
2.2. GFW 局域网环境加速配置
2.3. Hexo 命令行工具 (CLI) 安装
2.4. Git 密钥配置与 GitHub 仓库准备 - Hexo 站点初始化与文件结构详解
3.1. 初始化博客项目(hexo init)
3.2. 本地预览运行(hexo server)
3.3. 核心文件结构与作用 - Hexo 内容创作与组织
4.1. Front Matter(文章元数据)的使用与实例
4.2. 文章、页面与草稿的创建与发布
4.3. Scaffolds(脚手架)模板定制与实例
4.4. Tags(标签)与 Categories(分类)组织 - Hexo 进阶功能:Tag Plugins 与资源管理
5.1. Tag Plugins(标签插件)进阶用法与实例
5.2. Asset Folders(资源文件夹)管理本地资源
5.3. 免费无限空间图床方案:Cloudflare Pages + Telegram Bot - 主题安装、配置与美化
6.1. 主题的安装与启用(以 Git Clone 和 NPM 为例)
6.2. 站点全局配置(_config.yml)与路径优化
6.3. 主题个性化配置与功能开启实例(搜索、置顶、特效)
6.4. 网站模板系统进阶(Layouts, Partials, Variables, If/For Loops, Helpers, Data Files) - 博客部署与持续维护
7.1. GitHub Pages 部署流程
7.2. Cloudflare Pages/Zeabur 部署加速
7.3. Hexo 常用命令总结与部署流程
Ⅰ. Hexo 博客框架深入解读
Hexo 是一个快速、简单且强大的博客框架,基于 Node.js 运行,属于静态网站生成器 (Static Site Generator) 的范畴。它能够将博客内容(主要使用 Markdown 编写)转换成纯静态的 HTML、CSS 和 JavaScript 文件,从而实现高效的网页加载和管理。
核心特性
静态网站生成:Hexo 通过解析 Markdown 文件,生成静态的 HTML 页面,提供了极快的加载速度。通过这种方式,您不必担心动态网站的性能瓶颈。
基于 Node.js:Hexo 是用 Node.js 构建的,意味着它可以利用 Node.js 的高性能和丰富的生态,极大提升开发效率。
支持 Markdown 编写:Hexo 默认支持 Markdown 格式的内容书写,用户可以专注于内容创作,而无需处理复杂的 HTML 和 CSS。
快速部署与托管:Hexo 网站是纯静态文件,不需要后台数据库或复杂的服务端支持。你可以将博客托管在免费的平台如 GitHub Pages 或 Cloudflare Pages 上,成本几乎为零。
优势
极致的加载速度:由于 Hexo 是生成静态网页,页面不需要实时计算,所有内容都已经预先渲染。这样的架构使得网站在访问时非常迅速,尤其在使用 CDNs 进行全球加速时,速度优势尤为明显。
简化的网站管理:相较于动态博客系统如 WordPress,Hexo 不依赖于复杂的数据库管理和后台配置,极大减少了维护的复杂性。
无需编写 HTML/CSS:即使你对 HTML 和 CSS 不熟悉,Hexo 社区提供了大量精美的 主题,用户可以通过选择和配置主题来快速搭建个人博客。
零成本的托管:Hexo 是完全静态的,因此部署和托管的成本几乎为零。你可以使用 GitHub Pages、Netlify 或 Cloudflare Pages 等平台进行免费托管,且这些平台提供强大的全球分发网络,进一步提升访问速度。
生态系统
主题和插件丰富:Hexo 拥有庞大的主题库和插件生态,目前有超过 324 个主题 和 200 多个插件,涵盖了从 SEO 优化、社交分享到高级定制的各个方面。用户可以根据自己的需求选择合适的主题,并通过插件进行功能拓展。
灵活的自定义配置:Hexo 的配置文件(
_config.yml)简单易懂,用户可以轻松自定义网站设置、主题选项和插件配置,几乎可以满足任何需求。支持多种扩展功能:通过插件,你可以为博客添加评论系统、广告管理、分析工具等,甚至可以与第三方服务集成,增强网站的互动性和功能性。
成本
低成本维护:Hexo 作为一个纯静态网站生成器,几乎没有运行成本。你不需要为数据库或服务器支付额外费用。通过使用免费托管平台(如 GitHub Pages、Netlify 等),你可以大大节省托管费用。
高效的内容管理:与传统的 CMS(如 WordPress)相比,Hexo 的管理方式简单而直观,博客的内容只需通过 Git 进行版本控制和更新,减少了系统维护的复杂度。
总结
Hexo 是一个非常适合个人博客、技术文档以及小型网站的框架。其轻量、快速、简易的特点,使得它成为了广大开发者和技术爱好者的首选。无论是部署、维护还是自定义,都提供了足够的灵活性和便利,使其成为搭建静态网站的理想工具。
Ⅱ. 环境准备与 Hexo 基础安装(Windows/Mac)
在开始使用 Hexo 构建静态博客之前,必须完成基础运行环境的配置。本章将详细介绍 Node.js、Git 等必备软件的安装步骤,以及 Hexo 框架的初始化过程。
2.1. Node.js 和 Git 必备软件安装
下表列出了搭建 Hexo 博客系统所需的核心软件及其作用:
| 软件 | 作用 | 安装说明 | 验证命令 | 来源 |
|---|---|---|---|---|
| Node.js (含 npm) | Hexo 运行的基础环境,提供必要的 JavaScript 运行时和包管理工具 | 访问 nodejs.org 下载 LTS 稳定版本。安装过程中保持默认设置,安装路径建议不要包含中文或空格 | node -v 和 npm -v |
官网自动检测系统类型并提供对应安装包 |
| Git | 版本控制工具,用于主题拉取、依赖管理和博客部署到 GitHub Pages | 访问 git-scm.com/downloads 下载安装包。安装时在”Adjusting your PATH environment”界面建议选择”Git from the command line and also from 3rd-party software”选项 | git --version |
支持 Windows、macOS、Linux 全平台 |
| VS Code | 轻量型代码编辑器(非必须,但强烈推荐),提供 Markdown 编辑、语法高亮和终端集成功能 | 访问 Visual Studio Code 官网 下载并安装。安装后可在扩展商店搜索 Chinese (Simplified) Language Pack 扩展包,实现中文界面切换 | - | 微软官方提供,更新频繁 |
安装验证详细步骤:
验证 Node.js 安装
- Windows:按
Win + R输入cmd打开命令提示符 - Mac:打开”终端”应用程序
- 分别执行以下命令,若显示版本号则说明安装成功:
1
2node -v # 预期输出示例:v22.18.0
npm -v # 预期输出示例:10.9.3
- Windows:按
验证 Git 安装
在终端中执行:1
git --version # 预期输出示例:git version 2.51.0
配置 Git 用户信息(养成好习惯)
1
2git config --global user.name "您的用户名"
git config --global user.email "您的邮箱@example.com"
2.2. 推荐安装 nvm 管理 Node.js 版本 (不强制要求)
nvm (Node Version Manager) 是一个高效的 Node.js 版本管理工具,特别适用于需要同时维护多个项目的开发者。
Windows 系统安装 nvm:
下载安装包
- 访问 nvm-windows 官方 GitHub
- 下载最新版本的
nvm-setup.exe安装文件
安装注意事项
- 安装前请卸载已存在的 Node.js 版本
- 安装路径不要包含空格和特殊字符
- 建议使用默认安装路径
C:\Users\[用户名]\AppData\Roaming\nvm
基础使用命令
1
2
3
4
5
6
7
8
9
10
11# 查看所有可安装的 Node.js 版本
nvm list available
# 安装指定版本的 Node.js(推荐使用 LTS 版本)
nvm install 22.18.0
# 使用已安装的特定版本
nvm use 22.18.0
# 查看已安装的所有版本
nvm list
macOS 系统安装 nvm:
通过 Homebrew 安装
1
brew install nvm
或使用安装脚本
1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
版本兼容性说明: 使用 Node.js 20 以上版本 可能会导致部分 Hexo 插件无法正常运行,建议选择 Node.js 16-18 的 LTS 版本 以确保最佳兼容性。
2.2. GFW 局域网环境加速配置(国际互联网 不需要配置加速环境)
为避免 npm 安装卡顿,建议更换镜像源:
- 华为云镜像源配置示例:
1
npm config set registry https://repo.huaweicloud.com/repository/npm/
- 阿里/淘宝镜像源 (CNPM) 配置示例:
1
2
3# 第一次安装 cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
# 后续安装时,将 npm 替换为 cnpm 即可
2.3. Hexo 命令行工具 (CLI) 安装
- 安装命令:
1
npm install hexo-cli -g
- 权限提示: 如果在 Mac 上遇到权限问题,可能需要使用
sudo前缀;在 Windows 上,可能需要以管理员模式运行命令行。
- 权限提示: 如果在 Mac 上遇到权限问题,可能需要使用
- 验证安装:
1
2hexo -v
# 示例输出:hexo-cli: 4.3.2
2.4. Git 密钥配置与 GitHub 仓库准备 (如果你不准备部署在公网上/无法访问GitHub可以跳过该操作)
为了后续将博客部署到 GitHub Pages,需要配置 Git 密钥并创建 Public 仓库。
配置 Git 用户信息与密钥
- 打开 Git Bash 或命令行工具。
- 配置用户信息(使用您的 GitHub 信息):
1
2git config --global user.name "[您的 GitHub 用户名]"
git config --global user.email "[您的 GitHub 邮箱]" - 检查配置:
git config --list。 - 生成公钥和私钥:
1
2
3ssh-keygen -t rsa -C "[您的 GitHub 邮箱]"
# 推荐使用更加安全的 rsa
# 建议一路回车使用默认设置,除非你有特殊需求需要对密钥进行加密 - 添加到 GitHub: 在
C:\Users\[当前用户名]\.ssh\找到id_rsa.pub(公钥)文件,复制其全部内容,添加到 GitHub 的 设置 (Settings) > SSH and GPG keys 中。
创建 GitHub 仓库
- 目的: 存放博客生成的静态文件。
- 命名要求: 仓库名称必须遵循严格的格式:
[您的 GitHub 用户名].github.io,例如我的GitHub名称为shijianus则填写shijianus.github.io。 - 设置: 创建时选择公开 (Public) 仓库,后续你也可以修改为 私密(Private)。
Ⅲ. Hexo 站点初始化与文件结构详解
3.1. 初始化博客项目(hexo init)
选择/创建一个本地文件夹作为博客源码的存放位置。
- 操作过程: 在该文件夹内打开命令行或 Git Bash(右键选择
在终端打开或Git Bash)。- 命令示例:
1
2hexo init [您的博客文件夹名称]
# 示例:hexo init shijianus-blog - 提示: 推荐在科学环境下安装 Hexo,否则可能耗时较久。
- 命令示例:
- 进入目录并安装依赖: 即使初始化命令拉取了文件,依赖包的安装也可能失败。请手动进入新创建的文件夹,并执行安装命令:
1
2
3cd [您的博客文件夹名称]
npm install
# 或 cnpm install
3.2. 本地预览运行(hexo server)
您可以使用 Hexo 内置的本地服务器进行预览。
- 启动命令: 在项目根目录下运行:
1
2
3hexo server
# 简写:hexo s
# 最后应该出现 INFO Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop. - 访问: 在浏览器中输入
http://localhost:4000即可查看默认的 Hexo 网站。 - 停止服务器: 在命令行窗口按下
Ctrl + C。
3.3. 核心文件结构与作用
| 文件夹/文件 | 描述 | 来源 |
|---|---|---|
| _config.yml | 全局配置文件。 包含了网站的标题、作者、语言、时区以及默认主题等所有核心设置。最重要 的文件。 | |
| source | 内容源文件目录。 您所有的博客内容(Markdown 文件)都存放在这里。 | |
| source/_posts | 专门存放博客文章 (Posts) 的目录。 | |
| themes | 主题目录。 存放您下载和使用的所有主题。默认主题为 landscape。 |
|
| scaffolds | 脚手架/内容模板。 定义了新建文章、页面、草稿时的默认 Front Matter 和内容。 | |
| node_modules | Node.js 依赖模块。无需手动修改,但不能删除。 | |
| db.json | 缓存文件。用于 Hexo 运行,遇到主题问题时,可以通过 hexo clean 清除。 |
|
| package.json | Node.js 包管理器文件,用于定义 Hexo 所需的依赖。不要修改。 |
Ⅳ. Hexo 内容创作与组织
Hexo 的内容主要通过 Markdown 文件和 Front Matter(元数据)来定义。
4.1. Front Matter(文章元数据)的使用与实例
Front Matter 是位于 Markdown 文件顶部、由两条 --- 包裹的 YAML 或 JSON 格式的元数据,用于定义文章的属性。
默认字段:
title(标题),date(日期),tags(标签) 等。创建文章 A 示例文章 A.md
1
2
3
4
5
6
7
8
title: Unit
tags:
This is an example.操作实例: 修改文章 A 的 Front Matter 会立即影响主题的渲染。
- 将
title从a更改为a is title。 - 将
date从2017-09-13更改为2017-09-14。 - 效果: 网站上的文章标题和日期会同步改变,说明主题使用了 Front Matter 的信息。
- 在 Front Matter 中添加了
tags: [tag 1, tag 2, tag 3],主题卡片也随之显示了这些标签。
- 将
4.2. 文章、页面与草稿的创建与发布
| 类型 | 命令 | 文件生成位置 | 访问方式 | 来源 |
|---|---|---|---|---|
| 文章 (Post) | hexo new [文件名] |
source/_posts/ |
默认显示在首页。 | |
| 页面 (Page) | hexo new page [页面名] |
source/[页面名]/index.md |
不显示在首页,需通过 URL 访问(如 /about)。 |
|
| 草稿 (Draft) | hexo new draft [文件名] |
source/_drafts/ |
默认不渲染,用于未完成内容。 |
- 预览草稿实例:
- 首先创建草稿 B:
hexo new draft B。 - 必须关闭服务器后,运行以下命令才能预览到草稿:
1
hexo server --draft
- 首先创建草稿 B:
- 发布草稿实例:
- 当草稿 B 准备发布时,运行:
1
2hexo publish B
# Hexo 会自动将其从 _drafts 移动到 _posts 文件夹。
- 当草稿 B 准备发布时,运行:
- 默认布局控制实例:
- 在
_config.yml文件的writing部分,可以设置default_layout: [post/draft/page]。 - 示例: 将
default_layout设为draft,则当您只运行hexo new E时,Hexo 会自动将其创建为草稿 E,而非文章。
- 在
4.3. Scaffolds(脚手架)模板定制与实例
Scaffolds 位于 scaffolds/ 文件夹,是创建新内容时的默认模板。
- 文件类型: 默认包含
draft.md、page.md和post.md。 - 定制 Front Matter 实例: 如果您希望新建的草稿默认包含作者信息:
- 打开
scaffolds/draft.md文件。 - 在 Front Matter 中添加:
1
author: shijianus
- 效果: 运行
hexo new draft D,新建的 D.markdown 文件将自动包含author: shijianus字段。
- 打开
- 占位符: Scaffolds 使用
{ { title } }和{ { date } }作为占位符,在创建文件时自动填充。 - 自定义内容实例: 您可以在 Scaffold 文件中添加默认的 Markdown 内容(例如,每篇文章末尾的固定信息),每次创建新文章时会自动包含。
- 创建自定义 Scaffold 实例: 创建
scaffolds/draft.md文件,然后使用hexo new draft F命令,使用不同的模板布局。 - 提供几个我的脚手架:
- page.md 示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
title: {{ title }} #【必需】页面标题
date: {{ date }} #【必需】页面创建日期
type: #【必需】标签、分类、关于、音乐馆、友情链接、相册、相册详情、朋友圈、即刻页面需要配置
updated: #【可选】页面更新日期
comments: #【可选】显示页面评论模块(默认 true)
description: #【可选】页面描述
keywords: #【可选】页面关键字
top_img: https://drawing.shijian.qzz.io/file/AgACAgEAAyEGAAS6jkJbAAMKaPH6WxMi3NluwmC7rgICG7WeCZkAAgQLaxv7c5BH8Vzb_dwm3uABAAMCAAN3AAM2BA.png #【可选】页面顶部图片
mathjax: #【可选】显示 mathjax(当设置 mathjax 的 per_page: false 时,才需要配置,默认 false)
katex: #【可选】显示 katex(当设置 katex 的 per_page: false 时,才需要配置,默认 false)
aside: #【可选】显示侧边栏 (默认 true)
aplayer: #【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的音乐 配置
highlight_shrink: #【可选】配置代码框是否展开(true/false)(默认为设置中 highlight_shrink 的配置)
top_single_background: #【可选】部分页面的顶部模块背景图片 - post.md 示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
title: {{ title }} #【必需】页面标题
date: {{ date }} #【必需】页面创建日期
updated: #【可选】页面更新日期
tags: #【可选】文章标签
categories: #【可选】文章分类
keywords: #【可选】文章关键字
description: #【可选】文章描述
top: # 1 置顶
top_img: #【可选】文章顶部图片
comments: #【可选】显示文章评论模块(默认 true)
cover: https://img.090227.xyz/file/ae62475a131f3734a201c.png #【可选】文章缩略图(如果没有设置 top_img,文章页顶部将显示缩略图,可设为 false/图片地址/留空)
toc: #【可选】显示文章 TOC(默认为设置中 toc 的 enable 配置)
toc_number: #【可选】显示 toc_number(默认为设置中 toc 的 number 配置)
toc_style_simple: #【可选】显示 toc 简洁模式
copyright: #【可选】显示文章版权模块(默认为设置中 post_copyright 的 enable 配置)
copyright_author: #【可选】文章版权模块的文章作者
copyright_author_href: #【可选】文章版权模块的文章作者链接
copyright_url: #【可选】文章版权模块的文章作者链接
copyright_info: #【可选】文章版权模块的版权声明文字
mathjax: #【可选】显示 mathjax(当设置 mathjax 的 per_page: false 时,才需要配置,默认 false)
katex: #【可选】显示 katex(当设置 katex 的 per_page: false 时,才需要配置,默认 false)
aplayer: #【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的音乐 配置
highlight_shrink: #【可选】配置代码框是否展开(true/false)(默认为设置中 highlight_shrink 的配置)
aside: #【可选】显示侧边栏 (默认 true)
swiper_index: 10 #【可选】首页轮播图配置 index 索引,数字越小越靠前
top_group_index: 10 #【可选】首页右侧卡片组配置, 数字越小越靠前
ai: #【可选】文章ai摘要
background: "#fff" #【可选】文章主色,必须是16进制颜色且有6位,不可缩减,例如#ffffff 不可写成#fff
- page.md 示例:
4.4. Tags(标签)与 Categories(分类)组织
标签和分类用于组织内容,Hexo 会自动生成索引页。
- 添加方式: 在文章的 Front Matter 中添加
tags或categories数组。 - Tags 实例:
- 文章 A 设
tags: [tag 1, tag 2, tag 3];文章 B 设tags: [tag 1];文章 C 设tags: [tag 3]。 - 效果: Hexo 自动生成
/tags/tag 1页面,点击后会列出所有带有该标签的文章(A 和 B)。
- 文章 A 设
- 多级分类实例:
- 在 Front Matter 中使用嵌套结构:
categories: [cat 1, cat 1.1]。 - 效果: Hexo 会生成多级目录结构,例如
/categories/cat 1/cat 1.1。
- 在 Front Matter 中使用嵌套结构:
Ⅴ. Hexo 进阶功能:Tag Plugins 与资源管理
5.1. Tag Plugins(标签插件)进阶用法与实例
Tag Plugins 是添加到 Markdown 文件中的代码片段,可渲染复杂内容,避免编写 HTML。
- 语法结构: 使用双层花括号和百分号
{% %}。 - 代码块插入实例:
- 使用双标签结构:
{% codeblock %}` 和 `{% endcodeblock %}。 - 示例代码:
1
2
3
4{% codeblock lang:javascript %}
alert("Hello World");
var myVar = "hello world";
{% endcodeblock %} - 效果:
lang:javascript参数提供语法高亮和样式化。
- 使用双标签结构:
- YouTube 视频嵌入实例:
- 只需提供 YouTube 视频的 ID。
- 示例操作: 从 YouTube 分享/嵌入代码中提取 ID,并在文章 Front Matter 模板中添加该字段。
1
{% youtube YouTube ID %}
- 效果: 视频会成功嵌入到文章中,并实现自适应缩放。
5.2. Asset Folders(资源文件夹)管理本地资源
Asset Folders 用于存储与单个文章相关的静态资源(如图片、PDF)。
- 步骤一:开启配置(必须):
- 打开 Hexo 根目录下的全局配置文件
_config.yml。 - 滚动到
writing部分,设置post_asset_folder: true。
- 打开 Hexo 根目录下的全局配置文件
- 步骤二:创建资源文件夹: 运行
hexo new A时,Hexo 会在source/_posts/下创建A.markdown文件和同名A文件夹。 - 步骤三:引用资源(示例):
- 将静态资源(如
hexo.jpg)放入资源文件夹A中。 - 在
A.markdown文件中,使用 Hexo 标签引用:
- 将静态资源(如
| 功能 | Hexo 标签语法 | 示例操作效果 | 来源 |
|---|---|---|---|
| 显示图片 | {% asset_image hexo.jpg "Hexo logo" %} |
在 HTML 中显示图片,并带有标题。 | |
| 生成链接 | {% asset_link hexo.jpg %} |
显示一个链接,点击后链接到资源文件。 | |
| 获取路径 | {% asset_path hexo.jpg %} |
只输出资源的路径。 |
5.3. 免费无限空间图床方案:Cloudflare Pages + Telegram Bot
此方案利用 CF Pages 和 Telegram 频道,实现免费无限空间的图床功能。
- 前提: 原来的 Telegraph API 已关闭,需要切换到 Telegram 频道。
- 操作过程(零度解说方案):
- Bot 和频道准备:
- 创建新的 Telegram 频道(公开/私密)。
- 搜索
@BotFather,使用/newbot创建机器人,用户名必须以bot结尾。保存 Bot Token。 - 将 Bot 添加为频道管理员。
- 获取频道 ID:
- 搜索
@get_id_bot。 - 将频道中的任意消息转发给
@get_id_bot。 - Bot 返回的 ID 带有负号,必须保存。
- 搜索
- CF Pages 部署: Fork 图床开源仓库 (TF-Image),在 CF Pages 中连接 GitHub 仓库部署。
- 配置环境变量: 在 CF Pages 设置 > 变量和机密中添加:
TELEGRAM_BOT_TOKEN:填写 Bot Token。CHANNEL_ID:填写频道 ID(务必包含负号,例如-123456789)。
- 重新部署 使变量生效。
- Bot 和频道准备:
Ⅵ. 主题安装、配置与美化
Hexo 默认主题为 Landscape,您可以安装其他主题进行美化。
6.1. 主题的安装与启用(以 Git Clone 和 NPM 为例)
安装主题(示例:Git Clone Alpha Dust)
- 访问 Hexo 官方主题页面 (
hexo.io/themes),选择您喜欢的主题(如 Alpha Dust)。 - 进入主题的 GitHub 页面,复制 Git 地址。
- 在 Hexo 根目录下,运行
git clone命令:1
2git clone [主题 Git 地址] themes/alpha-dust
# 示例:主题文件被下载到 themes/alpha-dust 文件夹。
安装主题(示例:NPM 安装 Anzhiyu 及其依赖)
- 在 Hexo 根目录下,安装主题:
1
npm install hexo-theme-anzhiyu
- 安装主题所需的渲染器依赖:
1
npm install hexo-renderer-pug hexo-renderer-stylus --save
启用主题
- 修改 Hexo 根目录下的全局配置文件
_config.yml。 - 设置
theme变量:1
theme: anzhiyu # 或 alpha-dust
- 提示: 每次修改
_config.yml文件后,必须重启 Hexo Server 才能看到新主题效果。
主题配置分离(重要操作)
为方便主题升级,建议将主题的配置文件复制到 Hexo 根目录进行覆盖配置。
- 示例操作: 复制
themes/anzhiyu/_config.yml到 Hexo 根目录,并重命名为_config.anzhiyu.yml。后续所有主题配置都在这个根目录下的文件中进行修改,这会覆盖主题默认配置。
6.2. 站点全局配置(_config.yml)与路径优化
- 站点信息配置实例:
1
2
3
4title: shijian 的演示博客
subtitle: test
author: shijianus
language: zh-CN - 文章路径优化实例(Permalinks): 修改
permalink字段以优化文章 URL 结构。- 示例: 将默认路径注释掉,修改为简洁结构。
1
2# permalink: :year/:month/:day/:title/
permalink: wenzhang/:title/ - 效果: 文章链接将变为
/wenzhang/这是另一篇博文。
- 示例: 将默认路径注释掉,修改为简洁结构。
6.3. 主题个性化配置与功能开启实例
以下操作在主题配置文件(例如 _config.anzhiyu.yml)中进行。
创建 Tags/Categories 页面并配置菜单:
- 生成页面文件:
1
2hexo new page tags
hexo new page categories - 配置菜单: 在主题配置文件中找到
menu配置项,添加导航链接。- 示例(创建警告页并添加到导航):
- 运行
hexo new page SOS创建警告页。 - 在主题配置中添加:
警告页: /sos/。 - 添加站外链接实例:
博客本体: https://your.blog.com/ || fas fa-feather。
- 运行
- 示例(创建警告页并添加到导航):
- 生成页面文件:
文章置顶功能实例:
- 安装插件:
1
npm install hexo-generator-index-pin --save
- 使用: 在文章 Front Matter 中添加
top字段并赋予数字(数字越大优先级越高)。1
2
3
4
title: 这是置顶文章
top: 1
- 安装插件:
开启本地搜索功能实例:
- 安装插件:
1
npm install hexo-generator-search --save
- 启用: 在主题配置文件中,将本地搜索的开关设置为
true。
- 安装插件:
放置网站验证文件实例(示例):
- 将静态验证文件(例如 Google 广告验证文件
ADS.txt)直接放在 Hexo 根目录的source文件夹下。 - 效果: 可通过 URL
/ADS.txt访问,例如http://localhost:4000/ADS.txt。
- 将静态验证文件(例如 Google 广告验证文件
鼠标烟火特效实例:
- 在主题配置文件中找到相应配置项(如
烟火特效),将其设置为true。 - 效果: 刷新网站,点击鼠标会放烟花。
- 在主题配置文件中找到相应配置项(如
6.4. 网站模板系统进阶(Layouts, Partials, Variables, If/For Loops, Helpers, Data Files)
Layouts(布局)
Layouts 文件位于 themes/[主题名]/layout/,定义页面的骨架。
- 最高级布局:
layout.ejs是最高级布局,所有页面最终都会使用它。 - 内容插入: 使用特殊标签
<%- body %>在父布局中插入子布局的内容。- 示例:
index.ejs的内容会被插入到layout.ejs中<%- body %>所在的位置。
- 示例:
- 页面特定布局: 可创建
post.ejs(用于文章)、page.ejs(用于独立页面)、tag.ejs(用于标签索引页) 等,这些布局会被嵌套到layout.ejs中。
Partials(局部文件)
Partials 用于将常用的代码块(如 Header, Footer)提取到单独的文件中,实现代码模块化。
- 存储位置: 通常在
themes/[主题名]/layout/partial/。 - 插入 Partial 实例:
1
<%- partial('partial/header') %>
- 传递变量实例(示例):
- Layout 中传递变量:
1
<%- partial('partial/header', { title: 'hello world', color: 'blue' }) %>
- Partial 中访问: 在
header.ejs中使用<%= title %>和<%= color %>访问。 - 效果: 不同的 Layout 可以通过传递变量来改变 Header 的颜色或标题。
- Layout 中传递变量:
Variables(变量)
用于访问页面或网站的元数据。
- 访问页面信息实例:
- 标题:
<%= page.title %> - 日期:
<%= page.date %> - 内容:
<%- page.content %>
- 标题:
- 访问自定义变量实例:
- 在 Front Matter 设
author: shijianus。 - 通过
<%= page.author %>在模板中访问。
- 在 Front Matter 设
If Statements(条件判断)
用于在模板中根据条件执行代码块。
- 示例(判断作者): 检查文章的
page.author字段。1
2
3
4
5{% if page.author == "shijianus" %}
shijianus is the author he's the best
{% else %}
This author sucks
{% endif %} - 示例(检查变量是否存在):
{% if page.author %}:检查author变量是否已设置。
For Loops(循环)
用于遍历网站实体集合(如所有文章、标签、分类)。
- 示例 (遍历所有文章的标题):
1
2
3
4{% site.posts.forEach(function(post) { %}
<%= post.title %>
<br>
{% }) %}- 效果: 打印出所有文章的标题(如 shijianus 的 A 和 B)。
- 其他可循环实体: 您可以将
site.posts替换为site.pages、site.tags或site.categories。
Helpers(助手函数)
Helpers 是内置函数,用于执行字符串操作、日期格式化等实用功能。
| 功能 | Helper 示例 | 示例操作效果 | 来源 |
|---|---|---|---|
| 字符串去空白 | <%= trim(' string ') %> |
移除字符串的首尾空白。 | |
| 首字母大写 | <%= titlecase('this is my string') %> |
输出 This Is My String。 |
|
| 日期格式化 | <%= date(date_now, 'YYYY/MM/DD') %> |
输出当前日期,如 2017/09/13。 |
|
| 时间格式化 | <%= time(date_now, 'HH:mm:ss A') %> |
输出当前时间,如 6:21:07 PM。 |
Data Files(数据文件)
用于存储网站全局的、非文章内容的配置数据,作为一个小型数据库使用。
- 存储位置: 必须在
source/文件夹下创建_data/文件夹。文件格式 YAML 或 JSON。 - 示例: 创建
source/_data/my_data.yml,内容为var1: "var one's value"。 - 访问: 通过
site.data.[文件名].[变量]访问。- 示例:
<%= site.data.my_data.var1 %>,输出var one's value。
- 示例:
Ⅶ. 博客部署与持续维护
7.1. GitHub Pages 部署流程
部署 Hexo 博客需要先生成静态文件,然后推送到远程仓库。
- 步骤一:安装 Git 部署插件
1
npm install hexo-deployer-git --save
- 步骤二:配置部署信息
- 打开 Hexo 根目录下的
_config.yml文件。 - 滚动到文件底部,配置
deploy字段。- 示例配置:
1
2
3
4deploy:
type: git
repository: https://github.com/[GitHub用户名]/[仓库名].git
branch: main # 确保分支名正确
- 示例配置:
- 打开 Hexo 根目录下的
- 步骤三:生成静态文件
- 命令:
hexo generate(或hexo g)。 - 作用: 将内容编译到
public文件夹,包含所有静态 HTML 文件。
- 命令:
- 步骤四:执行部署
- 清理缓存(重要): 遇到配置或主题更改不生效时,运行此命令清除缓存 (
db.json) 和已生成的public文件夹。1
hexo clean
- 部署命令:
1
2hexo deploy
# 简写:hexo d
- 提示: 首次推送可能需要 GitHub 授权。
- 清理缓存(重要): 遇到配置或主题更改不生效时,运行此命令清除缓存 (
7.2. Cloudflare Pages/Zeabur 部署加速
Cloudflare Pages 部署
CF Pages 提供全球 CDN 加速,可替代 GitHub Pages 在国内访问不稳定的问题。
- 登录 Cloudflare,进入 Workers & Pages > Pages。
- 选择连接到 GitHub,授权并选择您的 Hexo 仓库。
- 构建设置保持默认(无需修改构建命令和输出目录),点击保存并部署。
Zeabur 部署
Zeabur 提供了免费托管服务。
- 登录 Zeabur,授权 GitHub 账户。
- 选择新建项目,选择服务(选择免费计划)。
- 选择您的 Hexo 仓库,点击部署。
- 部署完成后,可以在网络选项中添加自定义域名或使用免费生成的域名。
7.3. Hexo 常用命令总结与部署流程
| 命令 | 简写 | 作用 | 来源 |
|---|---|---|---|
hexo new [title] |
创建新文章 (Post) | ||
hexo new page [title] |
创建独立页面 (Page) | ||
hexo new draft [title] |
创建草稿 (Draft) | ||
hexo publish [title] |
将草稿移动到文章并发布 | ||
hexo clean |
清除缓存文件 (db.json) 和已生成的静态文件 (public/) |
||
hexo generate |
hexo g |
生成静态文件到 public/ 目录 |
|
hexo server |
hexo s |
启动本地服务器预览 (默认端口 4000) | |
hexo server --draft |
启动服务器时同时显示草稿 | ||
hexo deploy |
hexo d |
部署到远程仓库 |
博客更新部署流程:
完成本地修改后,请遵循以下命令序列更新您的在线博客:
1 | # 1. 清理缓存,确保所有更改生效 |
Hexo 会将新文件推送到 GitHub,托管平台(如 CF Pages/Zeabur)会自动同步并完成在线部署。
当然,你也可以直接复制下面的命令来直接操作,这样会更快:
- 本地预览:这样会清理本地缓存,并且在本地进行测试
1
hexo cl; hexo s
- 推送更新上线:这样会清理本地缓存,并且使用hexo-deployer-git插件生成静态文件,并帮助你部署到远程仓库中
1
hexo cl; hexo g; hexo d
Hexo 会将新文件推送到 GitHub,托管平台(如 CF Pages/Zeabur)会自动同步并完成在线部署


