2013-10-02 21 views
47

handlebar.runtime.js'un compile yöntemine sahip olmadığını buldum. Bu yüzden şablon motorunu kullanmak için doğru sürümü indirmedim.handlebar.js ile handlebar.runtime.js arasındaki fark nedir?

handlebar.runtime.js nedir?

Download: runtime-1.0.0'un indirme sayfasında daha fark edilmeyecek olması daha güzel olur mu?

+3

Çalışma zamanı, önceden derlenmiş şablonlarla çalışmanızı bekliyor. – rescuecreative

+0

tamam, teşekkürler, cevap olarak gönderebilir misiniz? – static

cevap

56

Gidonlar, tarayıcı tarafından doğal olarak anlaşılamayan {{this}} gibi görünen etiketleri kullanır. Tarayıcının bu etiketleri oluşturması için derlenmeleri gerekir. Derleme, sayfayı yüklemeden önce veya sonra olabilir.

Öğeleri hızlandırmak için şablonlarınızı önceden oluşturabilirsiniz. Daha fazla bilgi için handlebars site. Bunu yaparsanız, yalnızca sayfanıza handlebars çalışma zamanı komut dosyasını eklemeniz gerekir. Tam tanıtıcılardan daha küçüktür, çünkü derleme şablonları hakkında endişelenmenize gerek yoktur. Onları önceden derlemiş olduğunu varsayar.

Bir şablon derlendiğinde, çağrıldığında, kaşlı ayraç etiketlerinin tarayıcı tarafından anlaşılan değerlere dönüştürüldüğü gerçek HTML'ye dönecek olan bir işleve dönüştürülür. Örneğin

, bu ...

<div class="entry"> 
    <h1>{{title}}</h1> 
    <div class="body"> 
    {{body}} 
    </div> 
</div> 

... (Haziran 2014 itibariyle) precompiled sonra aşağıdaki dönüştürülecektir : Burada

(function() { 
    var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {}; 
templates['test.hbs'] = template({"compiler":[5,">= 2.0.0"],"main":function(depth0,helpers,partials,data) { 
    var helper, functionType="function", escapeExpression=this.escapeExpression; 
    return "<div class=\"entry\">\n <h1>" 
    + escapeExpression(((helper = helpers.title || (depth0 && depth0.title)),(typeof helper === functionType ? helper.call(depth0, {"name":"title","hash":{},"data":data}) : helper))) 
    + "</h1>\n <div class=\"body\">\n " 
    + escapeExpression(((helper = helpers.body || (depth0 && depth0.body)),(typeof helper === functionType ? helper.call(depth0, {"name":"body","hash":{},"data":data}) : helper))) 
    + "\n </div>\n</div>\n"; 
},"useData":true}); 
})(); 

önemli paket olduğunu Bir noktada, gerçek HTML oluşturulabilmesi için gidonlar şablonunun bu işleve dönüştürülmesi gerekir. Gidonlar çalışma zamanı betiği, derleyiciyi içermez ve böylece daha küçük hale getirir. Şablonlarınızı önceden derleyerek, JavaScript’in sayfayı oluşturmadan önce geçmesi gereken daha az ağır bir adım olacaktır.

+0

Bunun yanlış olduğunu düşünüyorum. Handlebars derleme adımını anladığımdan şablonları HTML'ye dönüştürmeyeceğim, ancak 'Handlebars.templates' içinde depolanacak her şablon için bir işlev oluşturmayacaksınız. Ardından, derleme değil, oluşturma adımı olan HTML'yi almak için bu işleve veri aktarabilirsiniz. – Flawyte

+1

Dedikleriniz, gidonun yeni sürümleri için doğrudur. Cevabı açıklığa kavuşturacağım. – rescuecreative

İlgili konular