2

我正在使用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 is问题the 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以我期望的方式呈现它(带空格)?

先感谢您!

4

2 回答 2

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>
于 2013-04-03T08:43:01.137 回答
0

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

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

仅针对这种情况,您无法找到真正的解决方案。

于 2013-04-02T17:43:57.027 回答