2011-03-21 69 views
13

當我使用HTMLPanel而不是普通的div時,會有某種懲罰嗎?UiBinder - HTMLPanel與div

E.g.

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

對比

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

回答

8

簡短的回答:

如果有疑問,查看生成的代碼(通過-gen參數在DEVMODE或編譯器)

龍答案:

將會有運行時性能損失使用一個簡單的DOM元素,總是。甚至更多的時候,通過解析HTML代碼片段來創建DOM元素。

UiBinder看到一個小部件的HTMLPanel一個孩子,它會生成一個佔位符<span>具有生成唯一的ID,然後使用HTMLPanel.addAndReplaceElement一個小部件來替換佔位符。

所以第二個片段將產生(約)

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

這不是一個性能損失,但我認爲HTMLPanel是唯一的小部件,一個UiBinder的範圍內,可以包含(兒童)混合Widget和HTML標籤。