UiBinder - HTMLPanel vs. div简短的回答:长答案:

2022-09-04 03:46:13

当我使用 a 而不是 plain 时,会有某种惩罚吗?HTMLPaneldiv

例如:

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

对比

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

答案 1

简短的回答:

如有疑问,请查看生成的代码(将参数传递给 DevMode 或编译器)-gen

长答案:

始终使用小部件而不是简单的DOM元素会降低运行时性能。当通过解析HTML片段创建DOM元素时,甚至更多。

当将小部件视为 的子项时,它将生成一个具有生成唯一 ID 的占位符,然后使用 将 该占位符替换为小部件。UiBinderHTMLPanel<span>HTMLPanel.addAndReplaceElement

因此,第二个代码段将生成(大约)

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

答案 2

这不是性能损失,但我认为HTMLPanel是唯一一个在UiBinder中可以包含(作为孩子)Widget和HTML标签混合的小部件。


推荐