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。