![](/img/trans.png)
[英]How can I get a handlebars.js minimized precompiled template using handlebars as a library?
[英]How do I precompile partials for handlebars.js?
我正在使用handlebars.js,我想开始预编译所有内容,但我似乎无法找到预编译部分内容的方法。 我的大部分模板实际上都是偏见的。 我试着像对待常规模板一样对待我们,但是然后将它们称为部分模板不起作用。
有没有办法预编译部分,或者,从另一个模板中调用一个模板?
我发现了一个更好的方法:将所有部分预编译为模板,然后在代码中使用它们之前,添加以下行:
Handlebars.partials = Handlebars.templates;
改进是1)它更短,2)它不会丢失任何调用父模板时可能传递的自定义助手。
正如GitHub上所述,Handlebars CLI中添加了-p
标志。
所以你可以使用handlebars my_partial.handlebars -p -f output.js
我正在使用HandleBars v3.0.3,我在一个文件中预编译了部分和非部分模板。
这个线程有点混乱,所以我总结了工作解决方案。
仍然不确定预编译部分,但这是如何在这个问题的帮助下从另一个模板中调用一个模板: 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));
});
我设法通过预先编译我的所有部分作为模板然后调整Nathans解决方案来使其工作
// instead of {{> partialName}} use {{partial "templateName"}}
Handlebars.registerHelper('partial', function (templateName) {
return new Handlebars.SafeString(JST[templateName](this));
});
所以对我来说Handlebars.templates
在我编译的时候变成了JST
,我在编译的模板文件中注意到了它。
for(let [name, template] of Object.entries(handlebars.partials)) {
handlebars.partials[name] = handlebars.compile(template);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.