在把手模板文字牙套(Literal braces in Handlebars template)

2019-10-28 12:14发布

我有包括括号困难{ }在车把模板,以便它并没有与把手的语法干扰。

具体而言,我想有这样的一个模板:

{{{sometag}}}

只是我想第一和最后一个大括号直译,而不是被车把的“非转义表达式”语法的一部分。

现在,在最短的便携式语法我能想出是{{#with "{"}}{{.}}{{/with}}这样我想会看起来像模板:

{{#with "{"}}{{.}}{{/with}}{{sometag}}{{#with "}"}}{{.}}{{/with}}

我可以使用HTML实体(如https://stackoverflow.com/a/16278085/3088208建议),或在字母后插入HTML注释{之前的最后} ,但是这些解决方案,而实际的,依赖于HTML,这使得他们有限的。

PS发现重复问题: 逃逸大括号站在旁边表达在车把

Answer 1:

我也寻找这种解决方案,但没有找到任何东西。 所以我创建帮手

 Handlebars.registerHelper('bracket', function(num, options = num) { const i = Number.isInteger(num) ? num : 1; const open = '{'.repeat(i); const close = '}'.repeat(i); return `${open}${options.fn(this)}${close}`; }); 

您可以使用它像

{{#bracket 2}}styles.{{name}}{{/bracket}}

它会给

{{styles.Name}}

如果未指定括号的数量这将是一个。



文章来源: Literal braces in Handlebars template