当我使用HTMLPanel
而不是普通的div
时会受到某种惩罚吗?
例如。
<g:HTMLPanel>
<div>
/* Widgets, more HTML */
</div>
</g:HTMLPanel>
与
<g:HTMLPanel>
<g:HTMLPanel>
/* Widgets, more HTML */
</g:HTMLPanel>
</g:HTMLPanel>
最佳答案
简短答案:
如有疑问,请查看生成的代码(将-gen
参数传递给DevMode或Compiler)
长答案:
始终在简单的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");