0

对使用dust.js 进行一些调查,我想知道是否有办法防止呈现不良数据。

模板

Hello {name}! You have {count} new messages

语境

{
   "name": "Mick",
   "count": Math.PI
}

产量,这个结果:

Hello Mick! You have 3.141592653589793 new messages

在这个例子中,有没有办法逃避 Math.PI,这样我们就可以退出而不打印 3.14..

4

1 回答 1

1

作为开发人员,您必须决定什么是“坏数据”以及什么是可接受的替代方案。

然后你必须在它到达dust.js之前在代码中转换它(例如构建页面的node.js),或者编写一个帮助器来呈现你想要的任何内容并使用适当的后备。例如,如果你想渲染整数,并显示一些自定义的后备文本,你可以使用这样的帮助器:

创建一个integerOrElse函数,并将其保存在文件中,例如。

local-dust-helpers.js

// this extends dustjs-helpers (which must therefore be in package.json)
var dust = require('dustjs-helpers');

dust.helpers.integerOrElse = function (chunk, ctx, bodies, params) {
  // tap function resolves variables in params
  var value = dust.helpers.tap(params.value, chunk, ctx),
  fallback = dust.helpers.tap(params.fallback, chunk, ctx) || '';
  // define a fallback for the fallback :) ----------------^^^^^

  // for more brevity, you could do this in one line with a ternary operator
  if (!isNaN(value) && parseInt(value) == value) {
    return chunk.write(value);
  } else {
    return chunk.write(fallback);
  }
}

然后require()在你的应用程序中,替换你调用 vanilladust.js 的地方:

应用程序.js

...
var dust  = require('./local-dust-helpers');
...

然后,您可以像使用原生的dust.js 指令一样使用它:

模板.尘埃

Hello {name}!
You have {@integerOrElse value='{count}' fallback='some' /} new messages
于 2014-05-19T14:49:51.630 回答