模板通过描述每个页面应该是什么样子来定义网站的呈现方式。下表显示了每个可用页面的对应模板。至少,一个主题应该包含一个 `index` 模板。
模板 | 页面 | 回退 |
---|---|---|
index |
主页 | |
post |
文章 | index |
page |
页面 | index |
archive |
归档 | index |
category |
分类归档 | archive |
tag |
标签归档 | archive |
布局
当页面共享类似的结构时 - 例如,当两个模板都具有标题和页脚时 - 您可能需要考虑使用 `layout` 来声明这些结构上的相似性。每个布局文件都应该包含一个 `body` 变量来显示相关模板的内容。例如
index |
|
yield
|
默认情况下,所有其他模板都使用 `layout` 模板。您可以在前置 matter 中指定额外的布局,或者将其设置为 `false` 以禁用它。通过在您的顶级布局中包含更多布局模板,甚至可以构建一个复杂的嵌套结构。
部分
部分对于在您的模板之间共享组件非常有用。典型的示例包括标题、页脚或侧边栏。您可能希望将您的部分放到单独的文件中,以使维护您的网站更加方便。例如
<h1 id="logo"><%= config.title %></h1> |
<%- partial('partial/header') %> |
yield
<h1 id="logo">My Site</h1> |
局部变量
您可以在模板中定义局部变量,并在其他模板中使用它们。
<h1 id="logo"><%= title %></h1> |
<%- partial('partial/header', {title: 'Hello World'}) %> |
yield
<h1 id="logo">Hello World</h1> |
优化
如果您的主题非常复杂,或者要生成的 文件数量过多,Hexo 的文件生成性能可能会显著下降。除了简化您的主题外,您还可以尝试片段缓存,它是在 Hexo 2.7 中引入的。
此功能借鉴了 Ruby on Rails。它会导致内容被保存为片段并缓存起来,以便在进行额外请求时使用。这可以减少数据库查询的数量,并可以加快文件生成速度。
片段缓存最适合用于标题、页脚、侧边栏或其他不太可能在模板之间发生更改的静态内容。例如
<%- fragment_cache('header', function(){ |
虽然使用部分可能更容易
<%- partial('header', {}, {cache: true}); |
fragment_cache()
将缓存渲染的结果并将缓存的结果输出到其他页面。这应该只用于预期 **不会** 跨不同页面发生更改的部分。否则,**不应该** 启用它。
例如,当在配置中启用 `relative_link` 时,它应该被禁用。这是因为相对链接可能会在不同页面上显示不同。