# (预)编译
# 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({});