2011-03-21 9 views
13

¿Existe algún tipo de sanción cuando estoy usando un HTMLPanel en lugar de una llanura div?UiBinder - HTMLPanel vs div

E.g.

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

en contraste con

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

Respuesta

8

Respuesta corta:

En caso de duda, mira el código generado (pasa el argumento -gen a la DEVMODE o compilador)

Respuesta larga :

Habrá una penalización en el rendimiento en tiempo de ejecución usando un widget sobre un simple elemento DOM, siempre. Y aún más cuando ese elemento DOM se crea al analizar un fragmento de HTML.

Cuando UiBinder ve un widget como un hijo de HTMLPanel, generará un marcador de posición <span> con un identificador único de generar y luego usar el HTMLPanel.addAndReplaceElement para reemplazar ese marcador de posición con un widget.

Así que el segundo fragmento generará (aprox)

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

Ésta no es una penalización en el rendimiento, pero creo que es la única HTMLPanel Widget que, dentro de un UiBinder, puede contener (como los niños) una mezcla de etiquetas Widget y HTML.