用dustjs可以做这样的事吗?与编译模板相反,然后在render方法中引用它。
>
> var dust = require('dustjs-linkedin');
>
> dust.stringRender("Hello {name}, how are you?", { name: "Joe" }, function(err, res) {
> console.log(res);
> });
'Hello Joe, how are you?'
>
我知道stringRender是一种虚构的方法;这只是为了清晰起见。
答案 0 :(得分:2)
你可以用几行代码自己做 - 毕竟这是Javascript。
function stringRender(source, context, callback) {
var tmpl = dust.loadSource(dust.compile(source));
return dust.render(tmpl, context, callback);
}
但是,我们认识到这是一个典型案例,因此您可以完全按照上面使用的函数dust.renderSource
使用stringRender
。 (上面的代码基本上是dust.renderSource
的代码。)
dust.renderSource("Hello {name}!", { name: "Jim" }, function(err, data) {
...
});
或者作为一个流:
dust.renderSource("Hello {name}!", { name: "Jim" }).pipe(...)
但是,不应在生产中使用此,因为编译是Dust模板生命周期中最慢的部分。在生产中,您应该始终预编译并缓存模板。
答案 1 :(得分:0)
有点晚但https://jsfiddle.net/7jfzpgby/要播放
if (!dust.stringRender)
{
dust.stringRender = function (template, data, cb)
{
var compiled = dust.compile(template);
var template = dust.loadSource(compiled);
dust.render(template, data, cb);
};
}
dust.stringRender("Hello {name}, how are you?", { name: "Joe" }, function (error, output) {
console.info(output);
})