为什么玉忽略\ n和空格?

时间:2015-08-20 12:30:36

标签: javascript html node.js templates pug

我使用var generateCodeBlock = jade.compile('div !{text}', {pretty: true});生成一些基于Jade的HTML 我想创建像这样的东西

<div>   
    var json = {
        labelA: 'a',
        labelB: 2
       };
</div>

但是当我输入{text: 'var json = {\n labelA: 'a',\n labelB: 2\n };'}时,它最终会创建<div class="setup"> var json = { labelA: 'a', labelB: 2 };</div>。我也尝试在#{text}中使用jade.compile,但没有区别。 为什么玉平变我的变量输入?

JSFiddle example

更新: 我现在尝试使用

为模板创建单独的文件
block codeBlock
    div.codeBlock
        for part in code
            div(class="#{part.className}") !{part.text}

jade.compileFile,它仍在生成var json = { labelA: 'a', labelB: 2 };

1 个答案:

答案 0 :(得分:3)

Jade不会忽略空格和换行符。如果您实际记录jade.compile($("#jadehi").html())(djson)返回的内容,则会看到您在数据中添加的任何空格或换行符(如"Jade\n Test Page")仍然存在。

忽略这些字符的HTML(或更准确地说,浏览器解释HTML的方式)。正如这个问题所解释的那样:

Why does the browser renders a newline as space?

并且,正如那里所建议的那样,使用<pre>元素可能对您有帮助。