2012-12-27 9 views
54

jQuery-Vorlagen sind seit einiger Zeit veraltet.Empfohlene jQuery Vorlagen für 2012?

Ich habe einige Daten in Form eines JavaScript-Objekts, das ich als HTML formatieren und an das DOM anhängen möchte. Was ist der beste Weg, dies in diesen Tagen zu tun?

  1. Sollte ich eine HTML-Zeichenfolge erstellen?
  2. Sollte ich Elemente über jQuery wie $('<li>',{id:'my-'+Id}).append($('<span>').text(myText)) erstellen?
  3. Gibt es einen Ersatz oder einen reifen Ersatz für jQuery Vorlagen?
+4

[Die API-Dokumentation] (http://api.jquery.com/jquery.tmpl/) sind offenbar noch veraltet, sie sagen, dass Feature "in Beta" ist. – bfavaretto

+0

@bfavaretto: Ja. Sagt [hier] (https://github.com/jquery/jquery-tmpl) sie nehmen es nicht über die Beta. – mpen

+2

Einige Leistungstest [Ergebnisse] (http://jsperf.com/2dom-manipulation-js-templating-vs-programatic-jquery) für Ihre drei Optionen. – sfk

Antwort

10

Sie sollten auf jeden Fall versuchen Handlebars und/oder Mustache

Ich neige dazu, Lenker zu verwenden, aber die Syntax ist sehr ähnlich.

104

Dies ist, wie ich es tun in meinen Projekten:

eine Vorlage in Ihrem HTML definieren:

<script type="text/template" id="cardTemplate"> 
<div> 
    <a href="{0}">{1}</a> 
</div> 
</script> 

Verwenden string.format Variablen ersetzen:

var cardTemplate = $("#cardTemplate").html(); 
var template = cardTemplate.format("http://example.com", "Link Title"); 
$("#container").append(template); 

string.format:

String.prototype.format = function() { 
    var args = arguments; 
    return this.replace(/{(\d+)}/g, function(match, number) { 
    return typeof args[number] != 'undefined' 
     ? args[number] 
     : match 
    ; 
    }); 
}; 

Ziemlich einfach, Sie können sogar Vorlagen kombinieren.

+6

Wie entkommst du HTML wo notwendig? In Ihrem Beispiel, wenn '{0}' ein Doppelzitat enthielt, haben Sie einfach Ihren HTML-Code in die Luft gejagt. – mpen

+3

@Mark Sie könnten 'escape()' aufrufen.Ich würde auf jeden Fall nach etwas robusterem suchen, wenn ich mehr als ein paar kleine Vorlagen machen müsste. Ich habe es hier als Beispiel für etwas verwendet, das nützlich sein könnte, so wie es für mich war. – sachleen

+0

genial .. ein Zweifel obwohl .. warum es unter

7

Vorlagen ganz einfach, so viel einfacher als zu versuchen, den JSON manuell zu analysieren. Seit ich dazu beigetragen habe, bin ich ein Teil von json2html, da ich die Templates nicht kompilieren muss und nur JSON und JavaScript verwende.

http://json2html.com

+0

Von den anderen hier genannten mag ich das Beste. Vielen Dank! – bdwakefield