Hexo 自定义页面
先前使用的Hexo主题略显花哨,为了让博客更学术范一点,准备在2024年伊始换一个新的主题。这个过程中遇到不少问题,其中之一便是如何在Hexo中自定义页面。
目录
前言
与Hexo的邂逅已有5年之久,期间换过不少主题。虽然总会遇到一些问题,但大多都在Github的教程以及各种issue的帮助下迎刃而解。每当看到一个焕然一新的主题,心中不免会产生一丝成就感。但说来惭愧,这么多年一直都对Hexo的配置浅尝辄止,就连最核心的页面渲染过程也是一知半解。
本次换了一个全新的主题——tranquilpeak。这个主题的UI风格很对我的胃口,美中不足的是它支持的特性并不是很丰富。例如,它不支持添加友情链接。本着不想抛弃那为数不多的“友谊”,我决定自己添加一个“友链”页面。
Hexo的渲染逻辑
Hexo框架
众所周知,Hexo是典型的静态博客框架。它需要用户先将本地的markdown文件渲染成静态的HTML网页,然后部署到服务器上供他人访问。在实际访问过程中,服务器只需要负责返回一个个静态的网页即可,并不需要进行额外的存储和逻辑运算。
因此,如何将用户编写的markdown文档渲染为精致的HTML页面就是Hexo需要解决的关键问题。Hexo的渲染过程主要涉及三个核心部分:
- 渲染引擎:这也是Hexo框架的核心,例如hexo-renderer-marked等npm包
- 数据:用户的博客内容,即若干个Markdown文档
- UI:Hexo的各种第三方主题
一句话总结三者的关系就是:渲染引擎根据主题设定的UI样式将用户编写的Markdown文档渲染成HTML页面(包括html、css和js三件套)。
目录结构
接下来,我将根据Hexo项目的目录结构对Hexo的渲染过程进行详细的介绍。一般而言,Hexo项目的目录主要包含以下内容:
1 | . |
- source:存放用户数据,如用户创建的Markdown文档
- themes:存放若干个Hexo主题
- languages:多语言配置文件夹,里面定义了配置文件中变量到具体语言的映射
- layout:布局,其中的*.ejs文件是对主页,分类,归档等页面的布局控制
- scripts:script源码
- source:css和js源码等
- _config.yml:相应主题的配置文件
- public:存放Hexo渲染得到的网页文件,部署时只需要将该目录上传到服务器
- _config.yml:Hexo的配置文件