# (预)编译

# 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({});
上次更新: 2020/8/11 下午 8:11:32