当我使用HTMLPanel
而非普通div
时会有某种惩罚吗?
E.g。
<g:HTMLPanel>
<div>
/* Widgets, more HTML */
</div>
</g:HTMLPanel>
与
相反<g:HTMLPanel>
<g:HTMLPanel>
/* Widgets, more HTML */
</g:HTMLPanel>
</g:HTMLPanel>
答案 0 :(得分:9)
如有疑问,请查看生成的代码(将-gen
参数传递给DevMode或编译器)
总是会在简单的DOM元素上使用窗口小部件来降低运行时性能。甚至在通过解析HTML片段创建DOM元素时更是如此。
当UiBinder
将小部件视为HTMLPanel
的子级时,它会生成一个带有生成唯一ID的占位符<span>
,然后使用HTMLPanel.addAndReplaceElement
替换该占位符用小部件。
所以第二个片段会产生(约)
HTMLPanel root = new HTMLPanel("<span id='uuid'></span>");
HTMLPanel child = new HTMLPanel("/* Widgets, more HTML. */");
root.addAndReplaceElement(child, "uuid");
答案 1 :(得分:2)
这不是性能损失,但我认为HTMLPanel是唯一一个在UiBinder中可以包含(作为子项)Widget和HTML标记混合的Widget。