# (預)編譯
# 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({});