2016-05-04 6 views
0

Kann man sowas mit dustjs machen? Anstatt ein Template zu kompilieren, dann referenzieren Sie es in der Rendermethode.Gibt es eine Möglichkeit, eine String-Staubvorlage zu rendern, ohne sie vorher zu kompilieren?

>  
> 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?' 
> 

Ich weiß, dass StringRender eine fiktive Methode ist; es ist nur für die Klarheit.

+0

zu spielen Was es mit dem Kompilieren falsch und Aufrufen sofort? – Bergi

+0

Weil es bequemer wäre, wenn die Template-Funktionalität in der Lage wäre, kleine Strings so zu rendern, wie sie sind. – tlovely

Antwort

2

Sie könnten dies selbst mit nur ein paar Zeilen Code tun - das ist schließlich Javascript.

function stringRender(source, context, callback) { 
    var tmpl = dust.loadSource(dust.compile(source)); 
    return dust.render(tmpl, context, callback); 
} 

jedoch erkennen wir dies ein typischer Fall ist, und so können Sie dust.renderSource genau verwenden, wie Sie Ihre Funktion stringRender oben verwendet. (Der obige Code ist im Grunde der Code von dust.renderSource.)

dust.renderSource("Hello {name}!", { name: "Jim" }, function(err, data) { 
    ... 
}); 

Oder als Stream:

dust.renderSource("Hello {name}!", { name: "Jim" }).pipe(...) 

aber Sie sollten nicht diese in der Produktion verwenden, da Kompilation der langsamste Teil der ist Staub Vorlage Lebenszyklus. In der Produktion sollten Sie Ihre Vorlagen immer vorkompilieren und zwischenspeichern.

0

ein bisschen spät, aber 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); 
}) 
Verwandte Themen