Handlebars.net不保留空白

时间:2019-04-26 18:55:46

标签: html handlebars.js handlebars.net

我有以下模板:

<!DOCTYPE html>
<html>
<body>
    {{>Header}}
    This is a test template.
    {{>Footer}}
</body>
</html>

当我编译此模板时,我希望得到它:

<!DOCTYPE html>
<html>
<body>
    This is a header.
    This is a test template.
    This is a footer.
</body>
</html>

相反,我得到的是:

<!DOCTYPE html>
<html>
<body>
This is a header.    This is a test template.
This is a footer.</body>
</html>

第一行和第三行之前的缩进不见了;并且第二行和结束body标记之前的换行符都消失了。这是预期的吗?有没有办法像在基础模板中一样保留空白?我应该注意,我在这里使用Handlebars.Net,尽管我的理解是,这是为了尽可能地模仿原始Javascript规范。

1 个答案:

答案 0 :(得分:1)

(也来自发布该消息的Github issue的答案)

因此,这里有两种不同的情况,我先总结一下,然后再解释:1)您期望的是不正确的; 2)您得到的内容也不正确,以另一种方式:

  1. 空格(和换行符)在HTML中并不重要,尽管从技术上讲,Handlebars是一种通用的字符串模板语言,但它所包含的设计决策和观点在很大程度上倾向于将其用于HTML模板语言。您不应该期望它保留隐式的换行符,而仅保留显式的换行符(例如,如果您输入\ n,它将保留该行符)

  2. Handlebars.Net实际上在某些情况下确实会保留一些换行符!那是一个错误,但是当前许多用户都在依赖它,因此我们将其保留在1.x中,而在v2中进行修复。

要获得所需的输出,请在模板中放置明确的换行符。干杯!