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

我正在使用handlebars.js,我想开始预编译一切,但我似乎无法find预编译部分的方法。 我的大部分模板实际上是部分。 我试图把我的他们像普通的模板,但他们称为部分不起作用。

有没有什么方法可以预编译部分,或者,可以从另一个模板中调用一个模板?

       

网上收集的解决方案 "如何预编译handlebars.js的部分?"

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

Handlebars.partials = Handlebars.templates; 

改进之处在于:1)更短,2)调用父模板时,不会丢失可能传入的自定义帮助器。

正如在GitHub上提到的,Handlebars CLI中已经添加了-p标志。

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

我正在使用HandleBars v3.0.3,并且我已经在一个文件中预编译了部分模板而不是部分模板。

这个线程有点混乱,所以我总结工作的解决scheme。

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

仍然不确定预编译部分,但这是如何从这个问题的帮助下从另一个模板中调用一个模板: 模板组合的把手助手

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

http://jsfiddle.net/EBt8R/

我设法通过预编译我的所有部分作为模板,然后调整Nathans解决scheme来实现它

 // instead of {{> partialName}} use {{partial "templateName"}} Handlebars.registerHelper('partial', function (templateName) { return new Handlebars.SafeString(JST[templateName](this)); }); 

所以对我来说Handlebars.templates成了JST当我编译的东西,我注意到在我编译的模板文件。