问题 如何删除Handlebars生成的换行符?


假设我有一个如下模板:

start
{{#if data}}
data
{{/if}}
end

无论我传递给模板,它总会有两个额外的换行符:

start

data

end

有没有办法让Handlebars不生成标签占用的换行符(不移动标签本身)?例如。

start
data
end

我想要这个的原因是因为有些情况(比如XML),不需要新行。

例如以下内容:

<parent>
    {{#each}}
        <child>{{.}}</child>
    {{/each}}
</parent>

会产生

<parent>

    <child>foo</child>

    <child>bar</child>

</parent>

将{{#each}},{{/ each}}折叠到一行会导致Handlebars在一行上生成列表。例如,这个:

 <parent>
     {{#each}}<child>{{.}}</child>{{/each}}
 </parent>

会产生

 <parent>
     <child>foo</child><child>bar</child>    
 </parent>

因此,为了生成没有多余换行符的XML,我的模板最终看起来像这样:

 <parent>{{#each}}
     <child>{{.}}{{/each}}
 </parent>

谢谢!


3755
2018-02-11 21:18


起源

您是否找到了不涉及以不同编码保存文档的解决方案? - Mark Lopez
@MarkLopez是的,你可以试试这个: handlebarsjs.com/block_helpers.html#whitespace-control - Dan
具有讽刺意味的是,我找到了解决问我的IDE使用Windows系统上常见的第二个新行字符保存文件。手柄杆没有正确移除角色。 - Mark Lopez
可能重复 你如何防止添加到Handlebars部分的换行? - paulmelnikow


答案:


看到 这个问题。尝试将swung破折号添加到括号中,例如{{> partial~}}而不是{{> partial}},这将删除换行符。在你的情况下,它将是:

start
{{#if data ~}}
data
{{/if ~}}
end

哪个会编译为:

start 
data 
end

9
2018-06-21 13:21





答案给出了 这里 使用快速把手3.0.0对我不起作用。什么工作是轻微的变化:

{{~#each children~}}
  {{this}}
{{~/each~}}

我在这个相关问题的答案中找到了这个解决方案:

https://stackoverflow.com/a/23636497/54426


0
2018-02-16 17:28