0

我将 DustJS 与 ExpressJS 与 NodeJS 一起使用。

当 ExpressJS 呈现时,它会自动转义我的dustJS中的新行和空白;而由于我将 JavaScript 放入我的 DustJS 模板中,所以我想保留空白。

如何做到这一点?

非常感谢。

更新:这里有一些进一步的解释:

在我的 template.dust 中,我有类似的东西:

 <script type='template' id="tempVO">{.vo|s}</script>
 <script>  {! Block to compile the dustJS into cache !}
 $(function($){
   dust.compile($("#tempVO").html(),"vo");

   // register helper
   dust.helpers.justToString = function(chunk, ctx, body, param){
     console.log(param);
   }
 })();

DustJS 的默认行为,当与 expressJS 一起使用时:

app.get("/",function(req,res){
  res.render("ajaxTemplate",xmlService.templates);
});

会避开所有的空白,结果是这样的:

 $(function($){dust.compile($("#tempVO").html(),"vo");// register helperdust.helpers.justToString = function(chunk, ctx, body, param){console.log(param);}})();// AJAX Callback</script><script>$(function(){$(".tipNeeded").tooltip();$(".tabsNeeded").tabs();});

这当然不是我想要的。]

虽然我可以只使用一些外部 JavaScript 导入,例如:

  <script src="my/own/beautiful.js"></script>

我仍然想知道如何在渲染我的dustJS文件时通过不转义空格来放入HTML脚本。

4

1 回答 1

1

Dust Tutorial on control whitespace suppressing中,确切的方法会根据您使用的版本而有所不同。如果您使用的是 v1.2.6(撰写本文时的最新版本),您可以将此行添加到您的代码中:

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

要快速测试它,请在对dustjs-linkedin 模块的需求之后立即添加该行:

var dust = require('dustjs-linkedin');

编辑:

从版本 1.2.0 到 1.2.5,compile 函数采用三个参数:

dust.compile = function(source, name, strip)

如果strip设置为false则保留空格。但是,看起来这个参数在 1.2.6 中被删除了。即使使用具有strip参数的版本,使用express时,您也不会dust.compile直接调用。您也许可以使用consolidate.js之类的东西作为编写两个渲染调用的基础,一个带有空格,一个没有......但我看不到一个简单的方法。

于 2013-06-10T13:23:35.733 回答