1

我有以下模板:

<!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>

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

4

1 回答 1

1

(也发布了Github 问题的答案) :

所以这里发生了两件不同的事情,我将首先总结然后解释:1)你的期望是不正确的;2)你得到的也是不正确的,以不同的方式:

  1. 空格(和换行符)在 HTML 中并不重要,虽然 Handlebars 在技术上是一种通用的字符串模板语言,但它包含的设计决策和意见非常倾向于将其用于 HTML 模板语言。你不应该期望它保留隐式换行符,只有显式换行符(例如,如果你放 \n 它会保留那个)

  2. Handlebars.Net 实际上确实保留了一些不应该的换行符!这是一个错误,但许多用户目前都在依赖它,所以我们将在 1.x 中保留它,但在 v2 中修复它。

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

于 2019-07-27T01:40:37.117 回答