dust.js包括部分没有修剪

时间:2013-04-02 16:55:57

标签: javascript node.js dust.js

我正在使用dust.js模板引擎。主模板包含一个部分,问题是dust.js修剪了包含的模板文件的每一行。

例如,主模板是:

<h1>{header}</h1>
{>dust_cnt /}

dust_cnt.dust是:

<div>
  This is
  the content
</div>

我通过以下方式呈现回复:     res.render('dust_template.dust',{header:'TEST OK'});

输出中This isthe content之间没有空格的问题。所以输出看起来像:

TEST OK

This isthe content

我无法通过放置{~n} 或其他分隔符来更改所有内容,我认为没有任何理由这样做。

http://linkedin.github.com/dustjs/上,我发现了以下评论GH- 166 - Added trimming of white spaces in dust templates configuration in the dust.compile ( default option is still true)。但是找不到设置方法来设置选项以避免修剪?

如何使dust.js以我期望的方式呈现(使用空格)?

提前谢谢!

2 个答案:

答案 0 :(得分:3)

好的,我找到了解决方案:)。在挖掘源代码+检查尘埃GitHub上的问题后,我决定使用以下内容来防止模板节点的格式化:

dust.optimizers.format = function(ctx, node) { return node };

(也在https://github.com/linkedin/dustjs/wiki/Dust-Tutorial#controlling-whitespace-suppression

默认行为非常危险 - 正如它在GitHub上提到的那样,它可能会导致严重的问题,例如:

<script>
//this will alert "test"
alert("this is test");
</script>

将呈现为:

<script>//this will alert "test" alert("this is test");</script>

答案 1 :(得分:0)

这很奇怪,我知道您不想编辑模板文件。但是,您可以通过在行尾添加空格以较不丑的方式解决此问题:

<div>
  This is < add space here
  the content
</div>

就这种情况而言,你无法找到真正的解决方案。