2011-03-21 9 views
13

HTMLPanel yerine div kullanıyorum bir çeşit ceza var mı?UIBinder - HTMLPanel vs. div

E.g.

aksine
<g:HTMLPanel> 
    <div> 
    /* Widgets, more HTML */ 
    </div> 
</g:HTMLPanel> 

için
<g:HTMLPanel> 
    <g:HTMLPanel> 
    /* Widgets, more HTML */ 
    </g:HTMLPanel> 
</g:HTMLPanel> 

cevap

8

Kısa cevap:

Şüpheye düşerseniz, oluşturulan kodun bakmak

Uzun cevap (DevMode veya derleyici -gen argüman geçmesine) :

Bir çalışma zamanı performans penaltı her zaman basit bir DOM öğesi üzerinde widget. Ayrıca, bu DOM öğesi bir HTML snippet'i ayrıştırılarak oluşturulduğunda daha da fazla. UiBinderHTMLPanel bir çocuk olarak bir widget görür

, bir oluşturmak benzersiz bir kimlikle bir yer tutucu <span> oluşturmak ve daha sonra bir widget ile bu yer tutucu yerine HTMLPanel.addAndReplaceElement kullanacaktır.

Yani ikinci pasajı Bu performans cezası değildir (yaklaşık)

HTMLPanel root = new HTMLPanel("<span id='uuid'></span>"); 
HTMLPanel child = new HTMLPanel("/* Widgets, more HTML. */"); 
root.addAndReplaceElement(child, "uuid"); 
1

üretecektir ama HTMLPanel'dir bir UiBinder içinde, (çocuklar gibi) bir karışımını içerebilir, bu sadece Widget olduğunu düşünüyorum Widget ve HTML etiketlerinin ikisi de.