- 模板
- 跳脫 Escaping
- 變數 Variables
- 顯示變數
- 情境變數
- 標籤
- If
- for
- 嵌入(include)
模板
這裏說明了 GitBook 可以使用的模板功能,GitBook 使用的是 Nunjucks 與 Jinga2 的語法(Jinga2 是 Python 程式語言的一種模板引擎,Nunjucks 則是將其功能實現在 JavaScript 語言環境)。
跳脫 Escaping
如果想要呈現模板的標籤,可以使用 raw 包裹起來,裡面的內容都會原樣輸出成純文字。
{% raw %}this will {{ not be processed }}{% endraw %}
變數 Variables
在一本書的情境範圍內,變數會尋找對應的值呈現出來。
變數是在 book.json 這個檔案中定義的:
{"variables": {"myVariable": "Hello World"}}
顯示變數
{{ book.myVariable }}
上面這個語法標記,會顯示書籍的變數值(也就是 Hello World)。變數可以使用點(.)語法尋找下一層的屬性。你也可以使用方括號語法。
{{ book.foo.bar }}{{ book["bar"] }}
如果找不到對應的變數定義,就什麼都不會呈現。假設你沒有定義 foo 變數,那麼後面這些標記都不會呈現: {{ foo }}, {{ foo.bar }}, {{ foo.bar.baz }}。
情境變數
有一些變數可以從目前的這個檔案,或是 GitBook 中取得特定的值:
| 名稱 | 描述 |
|---|---|
file.path |
目前檔案的相對路徑 |
file.mtime |
目前檔案最後一次修改的時間 |
標籤
標籤(Tags),是在模板中執行某些操作的特殊區塊。
If
If 判斷某些條件,讓你能選擇性的呈現內容。這是程式語言中標準的邏輯判斷。
{% if variable %}變數為真{% endif %}
如果 variable 有被定義且被判定為真(true),「變數為真」這幾個字就會呈現出來,否則就什麼都不呈現。
你還可以使用 elif 與 else 指定不同的條件判斷:
{% if hungry %}我很餓{% elif tired %}我很累{% else %}我很好!{% endif %}
for
for 會從陣列(arrays)與字典中迭代取值。(ps.這裡的字典是指在 JSON 檔案中以名稱:值所定義的一些資料。)
假設我們在 book.json 中定義了多個作者:
{"variables": {"authors": [{ "name": "Samy" },{ "name": "Aaron" }]}}
# Authors{% for author in authors %}- {{ author.name }}{% endfor %}
上面的範例,從作者 author 陣列中將每一個名稱 name 屬性都以清單呈現出來。
嵌入(include)
嵌入功能,會在內容參照(Content References)中詳細解說。
