Ist es möglich zu Rendern dust.js Vorlagen synchron?
Bin ich zu schreiben versucht, einen adapter für eine client-seitige HTML - /JS-Template-system zu verwenden dust.js unter der Haube ist. Leider ist die API erwartet render-Vorgänge synchron: die Ausgabe, die zurückgegeben werden sollen in der render () - Aufruf. Dust.js asynchron ist und geht der render-Ausgabe auf eine callback-Funktion. Gibt es eine Möglichkeit, dies zu umgehen, entweder in der Staub-APIs oder durch einige verrückte Javascript-hack?
- Gute Frage! Ich möchte wissen, die gleiche Sache, weil ich Sie benutzen will dust.js in einer CouchDB "show" - Funktion ( server-Seite ).
- Tut consolidate.js Hilfe?
- Leider sieht es so aus das API angeboten consolidate.js nutzt eine callback-Funktion in der gleichen Weise dust.js hat, also ich glaube nicht, dass es hier Hilfe :/
Du musst angemeldet sein, um einen Kommentar abzugeben.
DustJS ist nur noch auszuführen, was asynchron, wenn die Ressourcen es braucht, um zu Rendern (templates, partials) nicht schon alle geladen worden.
Wenn alle Abhängigkeiten von einer Vorlage geladen werden, bevor Sie ausgeführt, dass die Vorlage dann werde es synchron ausführen (so weit wie ich das beurteilen kann jedenfalls). So etwas wie:
Hier ist ein vollständigeres Beispiel unten:
(und hier ein jsfiddle-link, so können Sie es starten: http://jsfiddle.net/uzTrv/1/)
Es könnte Fälle geben (außer die, die ich erwähnt), wo ich falsch bin... ich weiß nicht alles über dustjs.
Auch ich wollte eine Funktion haben, die das akzeptiert einen Kontext und kehrte den Staub gerenderten text. Hier ist die Lösung, die ich kam mit:
Nutzung
Matt ' s Lösung gab mir einige Tipps, wie Sie schreiben, eine kleine wrapper versteckt, dass die "Hässlichkeit" seiner Lösung (von "Hässlichkeit" meine ich das deklarieren von Variablen außerhalb von Callbacks, die Zuweisung Wert innerhalb Rückruf und Rückgabe außerhalb Rückruf).
Es nicht nur umschließt das hack in eine kleine Funktion, sondern bindet auch die Vorlagen-Namen. Ich finde das unglaublich hilfreich, wie ich finde mich mit dem gleichen render-Funktion immer und immer wieder, aber ich will nicht angeben der Vorlagen-name jedes mal.
Dies ist, wie es zu benutzen: