La documentazione per il templating è parziale, ho visto la fonte.
La funzione _.template ha 3 argomenti:
- Testo stringa : la stringa del modello
- Dati oggetto : i dati di valutazione
- Impostazioni oggetto : impostazioni locali, _.templateSettings è l'oggetto impostazioni globali
Se non viene fornito alcun dato (o null), verrà restituita una funzione di rendering . Ha 1 argomento:
- Dati oggetto : stessi dei dati sopra
Ci sono 3 modelli regex e 1 parametro statico nelle impostazioni:
- RegExp valuta : "<% code%>" nella stringa del modello
- Interpolazione RegExp : "<% = code%>" nella stringa del modello
- Regexp sfuggire : "<% - code%>"
- Variabile stringa : facoltativo, il nome del parametro dati nella stringa modello
Il codice in una sezione di valutazione verrà semplicemente valutato. Puoi aggiungere una stringa da questa sezione con il comando __p + = "mystring" al modello valutato, ma questo non è raccomandato (non fa parte dell'interfaccia di template), usa invece la sezione interpolate. Questo tipo di sezione serve per aggiungere blocchi come if o for al template.
Il risultato del codice nella sezione interpolata verrà aggiunto al modello valutato. Se restituito null, verrà aggiunta una stringa vuota.
La sezione escape sfugge a html con _.escape sul valore restituito di un determinato codice. Quindi è simile a un _.escape (codice) in una sezione interpolata , ma sfugge a \ gli spazi bianchi come \ n prima di passare il codice a _.escape . Non so perché sia così importante, è nel codice, ma funziona bene con l' interpolato e _.escape - che non sfugge anche ai caratteri dello spazio bianco -.
Per impostazione predefinita, il parametro data viene passato da un'istruzione with (data) {...} , ma questo tipo di valutazione è molto più lento rispetto alla valutazione con variabile denominata. Quindi nominare i dati con il parametro variabile è qualcosa di buono ...
Per esempio:
var html = _.template(
"<pre>The \"<% __p+=_.escape(o.text) %>\" is the same<br />" +
"as the \"<%= _.escape(o.text) %>\" and the same<br />" +
"as the \"<%- o.text %>\"</pre>",
{
text: "<b>some text</b> and \n it's a line break"
},
{
variable: "o"
}
);
$("body").html(html);
risultati
The "<b>some text</b> and
it's a line break" is the same
as the "<b>some text</b> and
it's a line break" and the same
as the "<b>some text</b> and
it's a line break"
Puoi trovare qui altri esempi su come utilizzare il modello e sovrascrivere le impostazioni predefinite:
http://underscorejs.org/#template
Con il caricamento del modello hai molte opzioni, ma alla fine devi sempre convertire il modello in stringa. Puoi assegnarlo come una normale stringa come nell'esempio precedente, oppure puoi caricarlo da un tag script e utilizzare la funzione .html () di jquery, oppure puoi caricarlo da un file separato con il plug-in tpl di require.js .
Un'altra opzione per costruire l'albero del dom con laconic invece che con il modello.