2011-03-21 16 views
13

Czy jest jakiś rodzaj kary, gdy używam HTMLPanel zamiast zwykłego div?UiBinder - HTMLPanel kontra div

E.g.

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

w przeciwieństwie do

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

Odpowiedz

8

Krótka odpowiedź:

W przypadku wątpliwości, należy spojrzeć na wygenerowanego kodu (zdać -gen argument DEVMODE lub Compiler)

długa odpowiedź :

Będzie kara za wykonanie w trybie widget na prostym elemencie DOM, zawsze. A jeszcze więcej, gdy ten element DOM zostanie utworzony przez analizowanie fragmentu kodu HTML.

Kiedy UiBinder widzi widżet jako dziecko HTMLPanel, wygeneruje zastępczy <span> z wygenerowania unikalnego identyfikatora, a następnie użyć HTMLPanel.addAndReplaceElement zastąpić ten zastępczy z widgetu.

Więc drugi fragment będzie generować (w przybliżeniu)

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

To nie jest kara wydajność, ale myślę HTMLPanel jest jedyną widget, że w UiBinder, mogą zawierać (jako dzieci) mix obu tagów Widget i HTML.