如何为handlebars.js预编译部分?

Nat*_*dly 30 node.js handlebars.js

我正在使用handlebars.js,我想开始预编译所有内容,但我似乎无法找到预编译部分内容的方法.我的大部分模板实际上都是偏见的.我试着像对待常规模板一样对待我们,但是然后将它们称为部分模板不起作用.

有没有办法预编译部分,或者,从另一个模板中调用一个模板?

Nat*_*dly 50

我发现了一个更好的方法:将所有部分预编译为模板,然后在代码中使用它们之前,添加以下行:

Handlebars.partials = Handlebars.templates;
Run Code Online (Sandbox Code Playgroud)

改进是1)它更短,2)它不会丢失任何调用父模板时可能传递的自定义助手.

  • 这太棒了!它背后的秘密是什么?为什么这不是内置于车把?不管怎么说,还是要谢谢你 :))))) (2认同)

moo*_*aza 6

正如GitHub上-p所述,Handlebars CLI中添加了一个标志.

所以你可以使用 handlebars my_partial.handlebars -p -f output.js


Nat*_*dly 5

仍然不确定预编译部分,但这是如何在这个问题的帮助下从另一个模板中调用一个模板:Handlebars helper for template Composition

// instead of {{> partialName}} use {{partial "templateName"}}
Handlebars.registerHelper('partial', function(templateName,context){
    return new Handlebars.SafeString(Handlebars.templates[templateName](this));
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/EBt8R/


Yaw*_*war 5

我正在使用HandleBars v3.0.3,我在一个文件中预编译了部分和非部分模板.

这个线程有点混乱,所以我总结了工作解决方案.

  • 预编译时不要使用-p运算符.
  • 不要通过Handlebars.registerPartial('myPartial','{{name}}')注册部分模板;
  • 使用Nathan建议通过Handlebars.partials = Handlebars.templates将部分对象映射到模板对象;
  • 按名称{{> name}}引用部分模板