我有以下模板:
<!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规范。
答案 0 :(得分:1)
(也来自发布该消息的Github issue的答案):
因此,这里有两种不同的情况,我先总结一下,然后再解释:1)您期望的是不正确的; 2)您得到的内容也不正确,以另一种方式:
空格(和换行符)在HTML中并不重要,尽管从技术上讲,Handlebars是一种通用的字符串模板语言,但它所包含的设计决策和观点在很大程度上倾向于将其用于HTML模板语言。您不应该期望它保留隐式的换行符,而仅保留显式的换行符(例如,如果您输入\ n,它将保留该行符)
Handlebars.Net实际上在某些情况下确实会保留一些换行符!那是一个错误,但是当前许多用户都在依赖它,因此我们将其保留在1.x中,而在v2中进行修复。
要获得所需的输出,请在模板中放置明确的换行符。干杯!