UiBinder - HTMLPanel vs. div

萝らか妹 提交于 2020-01-02 01:02:08

问题


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>

回答1:


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");



回答2:


This isn't a performance penalty, but I think HTMLPanel is the only Widget that, within a UiBinder, can contain (as children) a mix of both Widget and HTML tags.



来源:https://stackoverflow.com/questions/5382428/uibinder-htmlpanel-vs-div

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!