# (预)编译
# Handlebars.compile(template, options)
编译模板以便立即执行。
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({});