模板

這裏說明了 GitBook 可以使用的模板功能,GitBook 使用的是 NunjucksJinga2 的語法(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),「變數為真」這幾個字就會呈現出來,否則就什麼都不呈現。

你還可以使用 elifelse 指定不同的條件判斷:

	{% 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)中詳細解說。


书籍推荐