# (預)編譯

# Handlebars.compile(範本, 選項)

編譯範本,以便立即執行。

const template = Handlebars.compile("{{foo}}");
template({});

支援各種選項,用於變更範本的執行方式。

  • data:設為 false 以停用 @data 追蹤。
  • compat:設為 true 以啟用遞迴欄位查詢。
  • knownHelpers:包含已知在範本執行時存在(為真)的輔助函式清單的雜湊。傳遞此項可讓編譯器最佳化多個案例。內建輔助函式會自動包含在此清單中,並可透過將該值設為 false 來省略。
  • knownHelpersOnly:設為 true 以根據已知輔助函式清單進行進一步最佳化。
  • noEscape:設為 true 以不對任何內容進行 HTML 逃逸。
  • strict:以嚴格模式執行。在此模式中,範本會擲回例外,而不是靜默略過遺失的欄位。這會產生一個副作用,即停用反向運算,例如 {{^foo}}{{/foo}},除非明確將欄位包含在來源物件中。
  • assumeObjects:在遍歷路徑時移除物件存在檢查。這是 strict 模式的子集,在已知資料輸入安全的狀況下,會產生最佳化的範本。
  • preventIndent:預設情況下,縮排的部分呼叫會導致整個部分的輸出以相同的量縮排。當部分寫入pre標籤時,這可能會導致意外的行為。將此選項設定為true將停用自動縮排功能。
  • ignoreStandalone:設定為true時,停用獨立標籤移除。設定時,獨立在自己的行上的區塊和部分不會移除該行上的空白。
  • explicitPartialContext:停用部分的隱式內容。啟用時,未傳遞內容值的部份將針對空物件執行。

# Handlebars.precompile(template, options)

預編譯給定的範本,以便將其傳送至用戶端並在未編譯的情況下執行。

var templateSpec = Handlebars.precompile("{{foo}}");

支援與Handlebars.compile方法相同的選項參數。此外,還可以傳遞

  • srcName:傳遞以產生輸入檔案的原始碼對應。以這種方式執行時,回傳結構為{code, map},其中code包含範本定義,而map包含原始碼對應。
  • destName:與srcName結合使用的選用參數,用於在產生原始碼對應時提供目標檔案名稱。

# Handlebars.template(templateSpec)

設定使用Handlebars.precompile預編譯的範本。

var template = Handlebars.template(templateSpec);
template({});
最後更新時間: 2020 年 8 月 11 日,下午 8:11:32