UiBinder - HTMLPanel与div

hel*_*hod 14 java gwt uibinder

当我使用HTMLPanel而不是平原时会有某种惩罚div吗?

例如

<g:HTMLPanel>
  <div>
    /* Widgets, more HTML */
  </div>
</g:HTMLPanel>
Run Code Online (Sandbox Code Playgroud)

相比之下

<g:HTMLPanel>
  <g:HTMLPanel>
    /* Widgets, more HTML */
  </g:HTMLPanel>
</g:HTMLPanel>
Run Code Online (Sandbox Code Playgroud)

Tho*_*yer 9

简短回答:

如有疑问,请查看生成的代码(将-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");
Run Code Online (Sandbox Code Playgroud)