• 模板
    • 跳脫 Escaping
    • 變數 Variables
      • 顯示變數
      • 情境變數
    • 標籤
      • If
      • for
    • 嵌入(include)

    模板

    這裏說明了 GitBook 可以使用的模板功能,GitBook 使用的是 Nunjucks 與 Jinga2 的語法(Jinga2 是 Python 程式語言的一種模板引擎,Nunjucks 則是將其功能實現在 JavaScript 語言環境)。

    跳脫 Escaping

    如果想要呈現模板的標籤,可以使用 raw 包裹起來,裡面的內容都會原樣輸出成純文字。

    1. {% raw %}
    2. this will {{ not be processed }}
    3. {% endraw %}

    變數 Variables

    在一本書的情境範圍內,變數會尋找對應的呈現出來。

    變數是在 book.json 這個檔案中定義的:

    1. {
    2. "variables": {
    3. "myVariable": "Hello World"
    4. }
    5. }

    顯示變數

    1. {{ book.myVariable }}

    上面這個語法標記,會顯示書籍的變數值(也就是 Hello World)。變數可以使用點(.)語法尋找下一層的屬性。你也可以使用方括號語法。

    1. {{ book.foo.bar }}
    2. {{ book["bar"] }}

    如果找不到對應的變數定義,就什麼都不會呈現。假設你沒有定義 foo 變數,那麼後面這些標記都不會呈現: {{ foo }}, {{ foo.bar }}, {{ foo.bar.baz }}

    情境變數

    有一些變數可以從目前的這個檔案,或是 GitBook 中取得特定的值:

    名稱 描述
    file.path 目前檔案的相對路徑
    file.mtime 目前檔案最後一次修改的時間

    標籤

    標籤(Tags),是在模板中執行某些操作的特殊區塊。

    If

    If 判斷某些條件,讓你能選擇性的呈現內容。這是程式語言中標準的邏輯判斷。

    1. {% if variable %}
    2. 變數為真
    3. {% endif %}

    如果 variable 有被定義且被判定為(true),「變數為真」這幾個字就會呈現出來,否則就什麼都不呈現。

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

    1. {% if hungry %}
    2. 我很餓
    3. {% elif tired %}
    4. 我很累
    5. {% else %}
    6. 我很好!
    7. {% endif %}

    for

    for 會從陣列(arrays)與字典中迭代取值。(ps.這裡的字典是指在 JSON 檔案中以名稱:值所定義的一些資料。)

    假設我們在 book.json 中定義了多個作者:

    1. {
    2. "variables": {
    3. "authors": [
    4. { "name": "Samy" },
    5. { "name": "Aaron" }
    6. ]
    7. }
    8. }
    1. # Authors
    2. {% for author in authors %}
    3. - {{ author.name }}
    4. {% endfor %}

    上面的範例,從作者 author 陣列中將每一個名稱 name 屬性都以清單呈現出來。

    嵌入(include)

    嵌入功能,會在內容參照(Content References)中詳細解說。