使用Jade呈现的HTML值中的额外空格

时间:2011-11-22 19:44:21

标签: html node.js whitespace express pug

每次我在Jade中编写HTML时,我都会在每个元素的值之后添加额外的空格。

例如,我的Jade模板中会有这样的一行:

label(for="keyword") Keyword

当渲染时,源将如下所示:

<label for="keyword_1">Keyword
          </label>

使用我的CSS弄乱了额外的空白问题。另外,它看起来并不整洁:)

任何人都知道如何阻止它被插入?

1 个答案:

答案 0 :(得分:11)

检查底部的更新

我假设您正在使用express - 请检查您的应用设置。

app.set('view options', { pretty: false })

如果jade模式(pretty)进行pretty: true渲染,则会使用嵌套缩进来排列生成的源(标记)。关闭漂亮的打印应解决您的问题(但请确保您没有尾随空格,如@alessioalex所指出的那样)。

如果您有理由要求您输出漂亮的格式(客户端规范,在我的情况下),那么您可以尝试其他一些事情。 textarea标签出现类似问题;令人沮丧的是因为空格实际上被注入到表单的内容中。我解决这个问题的方法是嵌入带有结束标记的文字html:

<textarea name="someField"></textarea>

docs可以为您提供更多详细信息(在这种情况下搜索html)。 github上有一个开放的issue #341,它建议使用类似this one for scalate的方法,但它目前不适用于jade(版本0.19.0)。

HTH

<强>更新

好的 - 微妙而酷......有一种更好的方法来保持pretty: true的性感输出并避免在标签内部间隔(我的textarea示例)...我只是尝试追加标签末尾的.(请参阅代码), Just Worked™: - )

form(name='frmname', method='POST')
  textarea(name='someField').

渲染:

<form name="frmname" method="POST">
  <textarea name="someField"></textarea>
</form>

美容!

为什么这样做?因为jade将标记上的.后缀视为标记将包含文本块(仅)的指示符,然后不提供任何文本块,因此默认为'',一个空字符串。