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