UiBinder - HTMLPanel与div [英] UiBinder - HTMLPanel vs. div

查看:122
本文介绍了UiBinder - HTMLPanel与div的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用 HTMLPanel 而不是普通的 div ?时,会有某种惩罚吗?



例如

 < g:HTMLPanel> 
< div>
/ *小工具,更多HTML * /
< / div>
< / g:HTMLPanel>



 < G:HTMLPanel> 
< g:HTMLPanel>
/ *小工具,更多HTML * /
< / g:HTMLPanel>
< / g:HTMLPanel>


解决方案

简短回答:



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

长答案:



总是会有一个运行时性能损失,它会在一个简单的DOM元素上使用小部件。甚至更多的时候,通过解析HTML代码片段来创建DOM元素。
$ b

UiBinder 将一个窗口小部件看作 HTMLPanel ,它会生成一个占位符< span> 并生成唯一的ID,然后使用 HTMLPanel.addAndReplaceElement



所以第二个片段会产生(大约)

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


Is there some sort of penalty when I'm using a HTMLPanel instead of a plain div?

E.g.

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

in contrast to

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

解决方案

Short answer:

When in doubt, look at the generated code (pass the -gen argument to the DevMode or Compiler)

Long answer:

There will be a runtime performance penalty using a widget over a simple DOM element, always. And even more when that DOM element is created by parsing an HTML snippet.

When UiBinder sees a widget as a child of HTMLPanel, it will generate a placeholder <span> with a generate unique ID and then use the HTMLPanel.addAndReplaceElement to replace that placeholder with a widget.

So the second snippet will generate (approx)

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

这篇关于UiBinder - HTMLPanel与div的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆