Dokumentacja szablonów jest częściowa, obejrzałem źródło.
Funkcja _.template ma 3 argumenty:
- String tekst : ciąg szablon
- Dane obiektu : dane oceny
- Ustawienia obiektu : ustawienia lokalne, _.templateSettings to obiekt ustawień globalnych
Jeśli nie podano danych (lub null), funkcja renderowania zostanie zwrócona. Ma 1 argument:
- Dane obiektu : takie same jak powyższe dane
W ustawieniach są 3 wzorce wyrażeń regularnych i 1 parametr statyczny:
- RegExp ocenia : „<% code%>” w ciągu szablonu
- RegExp interpolate : "<% = code%>" w ciągu szablonu
- RegExp Escape : „<% - code%>”
- Zmienna ciąg : opcjonalnie nazwa parametru danych w ciągu szablonu
Kod w sekcji oceny zostanie po prostu oceniony. Możesz dodać ciąg z tej sekcji za pomocą polecenia __p + = "mystring" do ocenianego szablonu, ale nie jest to zalecane (nie jest częścią interfejsu szablonów), zamiast tego użyj sekcji interpolacji. Ten typ sekcji służy do dodawania bloków, takich jak if lub for, do szablonu.
Wynik kodu w sekcji interpolacji zostanie dodany do ocenianego szablonu. Jeśli zwrócona zostanie wartość null, zostanie dodany pusty ciąg.
Ucieczka sekcja ucieka html z _.escape na wartości zwracanej danego kodu. Jest więc podobny do _.escape (kod) w sekcji interpolacji , ale ucieka \ znakami spacji, takimi jak \ n, zanim przekaże kod do _.escape . Nie wiem, dlaczego to takie ważne, jest w kodzie, ale działa dobrze z interpolacją i _.escape - która nie ucieka również przed spacjami - również.
Domyślnie parametr data jest przekazywany przez instrukcję with (data) {...} , ale tego rodzaju ocena jest znacznie wolniejsza niż ocena z nazwaną zmienną. Tak nazywania danych ze zmiennym parametrem jest czymś dobrym ...
Na przykład:
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);
wyniki
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"
Możesz znaleźć tutaj więcej przykładów korzystania z szablonu i zastąpienia ustawień domyślnych:
http://underscorejs.org/#template
Wczytując szablon masz wiele opcji, ale na końcu zawsze musisz przekonwertować szablon na ciąg. Można podać go jako zwykłego łańcucha jak w przykładzie powyżej, lub można go załadować z tagu skrypt i użyć .html () funkcję jQuery, czy można załadować go z oddzielnego pliku z TPL wtyczki z require.js .
Inna opcja, aby zbudować drzewo dom lakoniczne zamiast szablonów.