2016-07-27 12 views
0

Ich versuche herauszufinden, wie man eine unkompilierte Staubpartialansicht in eine Staubansicht einbeziehen kann.Unkompilierte Teiltöne in dust.js

main.dust:

<div class="container"> 
    {>"toolbar"/} 

</div> 

toolbar.dust:

<div class="row"> 
    toolbar 
    {somevariable} 
</div> 

Diese Versuche, eine kompilierte Teil namens toolbar.js nicht die kompilierten toolbar.dust Vorlage zu laden?

Ich habe diesen Beitrag hier gefunden: How do you include a raw, uncompiled partial in dust.js?, der mich Dateien laden lassen kann, aber alle {Variablen}, die sie enthalten, werden nicht ersetzt.

Ich möchte nicht jedes Mal, wenn ich sie ändere, Ansichten kompilieren müssen. Wie kann ich eine nicht kopierte Vorlage mit ihren ersetzten Variablen hinzufügen?

Antwort

1

Sie können einen onLoad Handler zu Dust hinzufügen, um zu erfahren, wie es versuchen sollte, Partials zu laden. Standardmäßig erwartet Dust, dass Sie alle Vorlagen vorregistriert haben, die Sie verwenden möchten.

Mehr Infos: Loading Templates (es klingt wie Sie Unkompilierte Vorlagen laden möchten)

Hinweis: Sie sollten nicht wirklich tun dies in der Produktion, da Vorlagen Kompilieren viel langsamer als sie zu machen. Wenn Sie etwas wie Express verwenden, nehmen Sie sich Zeit, um einen Build-Schritt oder ein Express-Plugin für Sie zu kompilieren. Es gibt Beispiele im Verzeichnis examples auf dem Dust GitHub-Repository.

Ein onLoad Handler könnte wie folgt aussehen (vorausgesetzt, Sie laufen Staub auf der server-- die Idee ist die gleiche für den Client):

dust.onLoad = function(templateName, callback) { 
    fs.readFile(templateName + '.dust', { encoding: 'utf8' }, function(err, data) { 
    callback(null, data); 
    }); 
}; 

Beachten Sie, dass callback den Knoten errback Signatur verwendet, so können Sie diesen Code vereinfachen:

dust.onLoad = function(templateName, callback) { 
    fs.readFile(templateName + '.dust', { encoding: 'utf8' }, callback); 
}; 

Es gibt eine example on our GitHub repo that does basically this.

+0

Ich templating streng auf dem Client und das Backend ist in PHP geschrieben. Was ich versuche zu erreichen, ist, unkompilierte Ansichten in 'dev' und kompilierte Templates (mit Grunt) in 'production' zu verwenden, um einen Build-Schritt während der Entwicklung zu verhindern. Ich fand diesen Beitrag: http://stackoverflow.com/questions/29304979/compiling-and-rendering-complex-dust-js-templates-on-the-client Wenn ich Staub.onLad hinzufügen scheint es zu sein Triggerung für jede Ansicht? Wie kann ich das nur für Teiltage verwenden? – Jonathan

+0

Die Idee ist die gleiche für den Client, nur ersetzen readFile mit etwas AJAX laden. – Interrobang

+0

Nevermind mein letzter Kommentar Ich hatte einige andere Probleme, es funktioniert Danke für die Hilfe! – Jonathan