Şablonlama belgeleri kısmi, kaynağı izledim.
_.Template fonksiyonu 3 bağımsız değişkenler:
- Dize metni : şablon dizesi
- Nesne verileri : değerlendirme verileri
- Nesne ayarları : yerel ayarlar, _.templateSettings genel ayarlar nesnesidir
Hiçbir veri (veya null) verilmezse, oluşturma işlevi döndürülür. 1 argümanı vardır:
- Nesne verileri : yukarıdaki verilerle aynı
Ayarlarda 3 normal ifade deseni ve 1 statik parametre vardır:
- RegExp değerlendirmesi : şablon dizesinde "<% code%>"
- RegExp enterpolate : şablon dizesinde "<% = kod%>"
- RegExp kaçış : "<% - code%>"
- Dize değişkeni : isteğe bağlı, şablon dizesindeki veri parametresinin adı
Bir değerlendirme bölümündeki kod basit bir şekilde değerlendirilecektir. Bu bölümden , değerlendirilen şablona __p + = "mystring" komutuyla dize ekleyebilirsiniz , ancak bu önerilmez (şablonlama arabiriminin parçası değil), bunun yerine enterpolat bölümünü kullanın. Bu bölüm türü, şablona if veya for gibi bloklar eklemek içindir.
İnterpolat bölümündeki kodun sonucu , değerlendirilen şablona eklenir. Null değeri geri verilirse, boş dize eklenir.
Kaçış bölümü ile html kaçar _.escape verilen kod dönüş değeri üzerine. Bir daha onun benzeri Yani _.escape (kod) bir in aradeğer bölümünde, ancak birlikte kaçar \ benzeri boşluk karakteri \ n o kodu geçirmeden önce _.escape . Neden bu kadar önemli olduğunu bilmiyorum, kodda, ama interpolate ve _.escape - beyaz boşluk karakterleri kaçmaz - çok iyi çalışır.
Varsayılan olarak data parametresi bir (data) {...} deyimi tarafından iletilir , ancak bu tür bir değerlendirme adlandırılmış değişkenle değerlendirmeden çok daha yavaştır. Yani adlandırma verileri ile değişken parametre şey iyidir ...
Örneğin:
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);
Sonuçlar
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"
Burada şablonun nasıl kullanılacağı ve varsayılan ayarların geçersiz kılınacağı ile ilgili daha fazla örnek bulabilirsiniz:
http://underscorejs.org/#template
Şablon yükleme ile birçok seçeneğiniz vardır, ancak sonunda şablonu her zaman dizeye dönüştürmeniz gerekir. Yukarıdaki örnek gibi normal bir dize olarak verebilir veya bir komut dosyası etiketinden yükleyebilir ve jquery'nin .html () işlevini kullanabilir veya ayrı bir dosyadan requir.js tpl eklentisi ile yükleyebilirsiniz. .
Dom ağacını templating yerine laconic ile inşa etmek için başka bir seçenek .