对使用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..
对使用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..
作为开发人员,您必须决定什么是“坏数据”以及什么是可接受的替代方案。
然后你必须在它到达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