从零搭建一个基于 Hexo + Matery 主题的个人博客,包含友情链接、留言板、搜索、日夜切换等完整功能。
为什么选择 Hexo?
Hexo 是一个快速、简洁且高效的静态博客框架,基于 Node.js。优点:
- 速度快 — 纯静态文件,秒开
- Markdown 写作 — 专注于内容,无需关心样式
- 丰富主题 — 数百款社区主题可选
- 免费部署 — 可部署到 GitHub Pages、Vercel、自己的服务器等
一、安装 Hexo
前置条件
需要 Node.js 和 npm,建议使用 LTS 版本:
1 | node -v # v18+ |
全局安装 Hexo CLI
1 | npm install -g hexo-cli |
初始化站点
1 | hexo init myblog |
启动本地预览
1 | hexo server |
浏览器访问 http://localhost:4000,即可看到默认主题的博客。
二、安装 Matery 主题
Matery 是一款 Material Design 风格的 Hexo 主题,功能丰富,自带标签、分类、归档、友情链接、留言板等模块。
1 | cd myblog |
在站点 _config.yml 中启用主题:
1 | theme: matery |
主题配置
Matery 的配置在 themes/matery/_config.yml 中。常用的配置项:
1 | menu: |
可以将自定义配置放在站点根目录的 _config.matery.yml,主题会自动合并覆盖。
三、配置博客
站点基本信息
编辑 _config.yml:
1 | title: 我的博客 |
创建分类页面
1 | hexo new page categories |
编辑 source/categories/index.md:
1 | --- |
类似地创建标签页、关于页、友情链接页、留言板页。
四、友情链接
在 source/_data/ 下创建 friends.json:
1 | [{ |
友情链接页面 source/friends/index.md:
1 | --- |
五、留言板
Matery 自带留言板页面,创建 source/contact/index.md:
1 | --- |
如果需要自建后端,可以用 Flask + SQLite 实现简单的留言 API,前端通过 AJAX 提交和加载。
六、搜索功能
安装搜索插件:
1 | npm install hexo-generator-search --save |
在 _config.yml 中配置:
1 | search: |
Matery 主题会自动识别并使用本地搜索。
七、日夜切换
Matery 不自带日夜切换,可以手动实现。原理:
- 用 CSS 变量定义颜色
- JavaScript 切换
data-theme属性 - 用
localStorage保存用户偏好
核心 CSS 变量:
1 | :root { |
八、部署到服务器
生成静态文件
1 | hexo generate |
文件输出到 public/ 目录,可直接用 Nginx / Caddy 托管。
Caddy 配置示例
1 | example.com { |
如果需要同时托管 Dashboard 等应用,可以添加反向代理:
1 | example.com { |
九、常用命令
| 命令 | 说明 |
|---|---|
hexo new "文章标题" |
创建新文章 |
hexo generate |
生成静态文件 |
hexo server |
本地预览 |
hexo clean |
清除缓存 |
hexo deploy |
部署 |
十、总结
Hexo + Matery 的组合非常适合个人博客:
- 写作体验好 — Markdown 原生支持
- 功能完整 — 标签、分类、搜索、友链一应俱全
- 部署灵活 — 静态文件,任何 Web 服务器都能托管
- 可扩展 — 支持插件和自定义开发
整套搭建下来,一个功能完善的个人博客就诞生了。祝你写作愉快!