有没有一种方法可以在不先编译的情况下渲染字符串灰尘模板?
Is there a way to render a string dust template without compiling it first?
是否可以用 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是一个虚构的方法;这只是为了清楚起见。
您只需几行代码就可以自己完成 — 毕竟这是 Javascript。
function stringRender(source, context, callback) {
var tmpl = dust.loadSource(dust.compile(source));
return dust.render(tmpl, context, callback);
}
但是,我们认为这是一个典型案例,因此您可以完全按照上面使用函数 stringRender
的方式使用 dust.renderSource
。 (上面的代码基本就是dust.renderSource
的代码)
dust.renderSource("Hello {name}!", { name: "Jim" }, function(err, data) {
...
});
或作为流:
dust.renderSource("Hello {name}!", { name: "Jim" }).pipe(...)
但是,您不应该在生产中使用这个,因为编译是 Dust 模板生命周期中最慢的部分。在生产中,您应该始终预编译和缓存您的模板。
有点晚但是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);
})
是否可以用 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是一个虚构的方法;这只是为了清楚起见。
您只需几行代码就可以自己完成 — 毕竟这是 Javascript。
function stringRender(source, context, callback) {
var tmpl = dust.loadSource(dust.compile(source));
return dust.render(tmpl, context, callback);
}
但是,我们认为这是一个典型案例,因此您可以完全按照上面使用函数 stringRender
的方式使用 dust.renderSource
。 (上面的代码基本就是dust.renderSource
的代码)
dust.renderSource("Hello {name}!", { name: "Jim" }, function(err, data) {
...
});
或作为流:
dust.renderSource("Hello {name}!", { name: "Jim" }).pipe(...)
但是,您不应该在生产中使用这个,因为编译是 Dust 模板生命周期中最慢的部分。在生产中,您应该始终预编译和缓存您的模板。
有点晚但是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);
})