# 模版
模板決定了網站內容的呈現方式,每個主題至少都應包含一個 `index` 模板,以下是各頁面相對應的模板名稱:
| 模板 | 用途 | 回調 |
| --- | --- | --- |
| `index` | 首頁 |
| `post` | 文章 | `index` |
| `page` | 分頁 | `index` |
| `archive` | 歸檔 | `index` |
| `category` | 分類歸檔 | `archive` |
| `tag` | 標簽歸檔 | `archive` |
## 布局(Layout)
如果頁面結構類似,例如兩個模板都有頁首(Header)和頁腳(Footer),您可考慮通過「布局」讓兩個模板共享相同的結構。一個布局文件必須要能顯示 `body` 變量的內容,如此一來模板的內容才會被顯示,舉例來說:
```
index
```
```
<!DOCTYPE html>
<html <body<%-body</body</html
```
生成:
```
<!DOCTYPE html>
<html <bodyindex</body</html
```
每個模板都默認使用 `layout` 布局,您可在 front-matter 指定其他布局,或是設為 `false` 來關閉布局功能,您甚至可在布局中再使用其他布局來建立嵌套布局。
## 局部模版(Partial)
局部模板讓您在不同模板之間共享相同的組件,例如頁首(Header)、頁腳(Footer)或側邊欄(Sidebar)等,可利用局部模板功能分割為個別文件,讓維護更加便利。舉例來說:
```
<h1id"logo"<%=config.title</h1
```
```
<%-partialpartialheader<divid"content"Home page</div
```
生成:
```
<h1id"logo"My Site</h1<divid"content"Home page</div
```
### 局部變量
您可以在局部模板中指定局部變量并使用。
```
<h1id"logo"<%=title</h1
```
```
<%-partialpartialheadertitle:HelloWorld<divid"content"Home page</div
```
生成:
```
<h1id"logo"Hello World</h1<divid"content"Home page</div
```
## 優化
如果您的主題太過于復雜,或是需要生成的文件量太過于龐大,可能會大幅降低性能,除了簡化主題外,您可以考慮 Hexo 2.7 新增的局部緩存(Fragment Caching) 功能。
本功能借鑒于 [Ruby on Rails](http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching),它儲存局部內容,下次便能直接使用緩存內容,可以減少文件夾查詢并使生成速度更快。
它可用于頁首、頁腳、側邊欄等文件不常變動的位置,舉例來說:
```
<%- fragment_cache('header'function{ return'<header></header>'
});
```
如果您使用局部模板的話,可以更簡單:
```
<%- partial('header'true
```
但是,如果您開啟了 `relative_link` 參數的話,請勿使用局部緩存功能,因為相對鏈接在每個頁面可能不同。
- 文檔
- 開始使用
- 概述
- 建站
- 配置
- 指令
- 遷移
- 基本操作
- 寫作
- Front-matter
- 標簽插件(Tag Plugins)
- 資源文件夾
- 數據文件
- 服務器
- 生成文件
- 部署
- 自定義
- 永久鏈接(Permalinks)
- 主題
- 模版
- 變量
- 輔助函數(Helpers)
- 國際化(i18n)
- 插件
- 其他
- 問題解答
- 貢獻
- API
- 核心
- 概述
- 事件
- 局部變量
- 路由
- Box
- 渲染
- 文章
- 腳手架(Scaffold)
- 主題
- 擴展
- 控制臺(Console)
- 部署器(Deployer)
- 過濾器(Filter)
- 生成器(Generator)
- 輔助函數(Helper)
- 遷移器(Migrator)
- 處理器(Processor)
- 渲染引擎(Renderer)
- 標簽插件(Tag)