2012-11-23 12 views
5

Ich arbeite an einfachen Templating Enging für meine Arbeit in Javascript .. Es muss sehr einfach sein, so dass ich nicht Lenker, Schnurrbart oder andere robuste Templating-Engine zur Verfügung steht.Was ist Javascript Vorlage vorkompilieren?

Ich halte das Wort 'PRECOMPILE' oder 'KOMPILIEREN' template Leseleistung zu steigern. Aber ich bin mir nicht sicher, was genau damit gemeint ist. In meiner Arbeit cache ich die Schablone html in meinem Objekt, um zu vermeiden, die Schablonenhtml jedes Mal zu schlagen.

Es ist eine sehr einfache Funktion, die in erster Linie führt folgende

_template = _template.replace(/\{(.+?)\}/g, function(token, match, number, txt) { 
        return item[match]; 
       }); 

Artikel das Objekt, das den Wert ersetzt werden hält.

Kann mir bitte jemand sagen was genau es bedeutet wenn sie (Lenker etc) sagen die Vorlage kompilieren. ?

+0

Ich fand diesen Beitrag http: // ejohn.org/blog/javascript-micro-templating/nach dem Lesen Antwort von @nrabinowitz .. – Kamal

Antwort

7

Normalerweise werden Vorlagen analysiert regex und anschließend konvertiert functioneval verwenden. Dies heißt vorkompilieren Vorlage.

Aufrufen solcher Funktionen mit einigen Daten als Argumente übergeben Render-Vorlage. So Vorlagen wird nicht jedes Mal analysiert, wenn Sie es aufrufen - es existiert bereits in Form von Funktion, die verkettet und gibt String zurück.

-1

Update: Ich bin hier falsch, siehe Kommentar unten.

Nun lassen Sie uns sagen, dass meine Vorlage ein Satz mit Füllung in den Rohlingen ist:

Eines Tages _ ___ entschied er _ ____ mit ihm zum _ ____ bringen würde.

Kompilieren der Vorlage würde die Lücken ausfüllen.

Am Tag entschied JOHN, dass er SALLY mit ihm zum BATMAN PREMIER bringen würde.

Hoffnung Metapher ist in diesem Fall hilfreich:)

+4

Nein, das ist nicht, was diese Bibliotheken bedeuten. Was Sie beschreiben, ist das Rendern der Vorlage, nicht das Kompilieren. – nrabinowitz

+0

Wort! Du hast recht. – Costa

11

Unterstreichung, Lenker und die meisten anderen JS-Vorlagen erstellen eine Funktion außerhalb der Vorlagenzeichenfolge. Sie können die Funktion dann mehrmals mit verschiedenen Argumenten aufrufen und die entsprechende HTML-Zeichenfolge abrufen. (Ich glaube, Underscore und Lenker tun dies, indem sie die Template-Zeichenfolge in JS-Code analysieren und dann den Function-Konstruktor aufrufen, um die kompilierte Template-Funktion zu erstellen.) Wenn diese Bibliotheken über "Vorkompilieren" sprechen, meinen sie damit den ersten Schritt von Verwandeln Sie den Vorlagenstring in eine wiederverwendbare Funktion. Dies kann ein etwas schwerer Schritt sein, aber es macht das Rendern der Vorlage viel schneller (in den meisten Fällen schneller als eine einfache Regex-Substitution). Daher ist es effizienter, die Funktion aus dem Vorlagencode zu erstellen und sie dann mehr zu verwenden als neu zu kompilieren und zu rendern jedes Mal, wenn die Vorlage aufgerufen wird.