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

Dan*_*Dan 13 handlebars.js

假设我有一个如下模板:

start
{{#if data}}
data
{{/if}}
end
Run Code Online (Sandbox Code Playgroud)

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

start

data

end
Run Code Online (Sandbox Code Playgroud)

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

start
data
end
Run Code Online (Sandbox Code Playgroud)

我想要这个的原因是因为有些情况(比如XML),不希望换行.

例如以下内容:

<parent>
    {{#each}}
        <child>{{.}}</child>
    {{/each}}
</parent>
Run Code Online (Sandbox Code Playgroud)

会产生

<parent>

    <child>foo</child>

    <child>bar</child>

</parent>
Run Code Online (Sandbox Code Playgroud)

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

 <parent>
     {{#each}}<child>{{.}}</child>{{/each}}
 </parent>
Run Code Online (Sandbox Code Playgroud)

会产生

 <parent>
     <child>foo</child><child>bar</child>    
 </parent>
Run Code Online (Sandbox Code Playgroud)

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

 <parent>{{#each}}
     <child>{{.}}{{/each}}
 </parent>
Run Code Online (Sandbox Code Playgroud)

谢谢!

Pat*_*ell 12

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

start
{{#if data ~}}
data
{{/if ~}}
end
Run Code Online (Sandbox Code Playgroud)

哪个会编译为:

start 
data 
end
Run Code Online (Sandbox Code Playgroud)