【问题标题】:UiBinder - HTMLPanel vs. divUiBinder - HTMLPanel 与 div
【发布时间】:2011-07-19 22:33:11
【问题描述】:

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

例如

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

对比

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

【问题讨论】:

    标签: java gwt uibinder


    【解决方案1】:

    简答:

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

    长答案:

    在简单的 DOM 元素上使用小部件总是会降低运行时性能。当通过解析 HTML sn-p 创建 DOM 元素时,甚至更多。

    UiBinder 将某个小部件视为HTMLPanel 的子代时,它将生成一个带有生成唯一ID 的占位符&lt;span&gt;,然后使用HTMLPanel.addAndReplaceElement 将该占位符替换为一个小部件。

    所以第二个 sn-p 将生成(大约)

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

    【讨论】:

      【解决方案2】:

      这不是性能损失,但我认为 HTMLPanel 是唯一一个在 UiBinder 中可以包含(作为子项)Widget 和 HTML 标签的小部件。

      【讨论】:

        猜你喜欢
        • 2012-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        • 1970-01-01
        • 2012-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多