2012-12-27 13 views
54

jQuery I modelli sono stati deprecati per qualche tempo.Modelli jQuery consigliati per il 2012?

Ho alcuni dati sotto forma di un oggetto JavaScript che voglio formattare come HTML e aggiungere al DOM. Qual è il modo migliore per farlo in questi giorni?

  1. Devo creare una stringa HTML?
  2. Devo creare elementi tramite jQuery come $('<li>',{id:'my-'+Id}).append($('<span>').text(myText))?
  3. Esiste un sostituto o un sostituto maturo per i modelli jQuery?
+4

[la documentazione API] (http://api.jquery.com/jquery.tmpl/) sono apparentemente ancora più deprecato, dicono che la funzione è "in beta". – bfavaretto

+0

@bfavaretto: Sì. Dice [qui] (https://github.com/jquery/jquery-tmpl) che non stanno passando la versione beta. – mpen

+2

Alcuni test delle prestazioni [risultati] (http://jsperf.com/2dom-manipulation-js-templating-vs-programatic-jquery) per le tre opzioni. – sfk

risposta

10

Si dovrebbe provare Handlebars e/o Mustache

Io tendo ad usare manubrio, ma la sintassi è abbastanza simile.

104

Questo è come lo faccio nei miei progetti:

Definire un modello nel codice HTML:

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

Usa String.Format di sostituire le variabili:

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 
    ; 
    }); 
}; 

Abbastanza semplice, puoi persino combinare i modelli.

+6

Come si sfugge all'HTML dove necessario? Nel tuo esempio se '{0}' conteneva una doppia citazione, hai appena fatto esplodere il tuo HTML. – mpen

+3

@ Mark Si può chiamare 'escape()'.Cercherò sicuramente qualcosa di più robusto se avessi bisogno di fare più di alcuni piccoli modelli. L'ho messo qui solo come esempio di qualcosa che potrebbe essere utile, come è stato per me. – sachleen

+0

impressionante .. un dubbio però .. perché deve essere messo sotto

7

I modelli completamente, è molto più semplice che cercare di analizzare manualmente il JSON. Dato che ho contribuito a questo, sono parziale a json2html in quanto non richiede la compilazione dei modelli E non usa nient'altro che JSON e JavaScript.

http://json2html.com

+0

Degli altri menzionati qui mi piace il meglio. Grazie! – bdwakefield

Problemi correlati