【问题标题】:A more efficient approach to attach components to panel and render them on screen将组件附加到面板并在屏幕上呈现它们的更有效方法
【发布时间】:2010-12-11 16:33:32
【问题描述】:

他的,

我尽可能使用 UiBinder 来提高应用程序的性能。但是,据我了解,当相应的模板包含丢失的静态信息时,UiBinder 处于最佳状态。

就我而言,移动应用程序的大部分屏幕区域都包含动态信息。例如,有一个带有按钮的面板,但您事先不知道一次显示多少个按钮。这就是我在拥有的 UiBinder 类中使用 HTMLPanel.add(Widget wgt, String id) 或 FlowPanel.add() 方法的原因。这不是减少了 UiBinder 的使用和调用 setInnerHTML() 的能力,而不是通过 DOM 操作创建元素,因为这些 add() 方法只接受小部件而不接受元素?

也许有一个技巧可以将 Element 对象而不是 Widget 对象添加到面板中,然后他们会充分利用 setInnerHTML?

谢谢

【问题讨论】:

  • 您应该回答的第一个问题是“您当前的代码/应用程序是否真的很慢(ish)?” :) GWT 编译器做了很多优化,所以除非你有成百上千个这样的小部件,否则应该没问题。
  • 它非常缓慢,但仅限于移动浏览器,它是为它设计的;)。在桌面浏览器上运行具有 10 倍数量的小部件的代码要快得多。这就是为什么我正在寻找进一步减少小部件数量的方法。

标签: gwt mobile widget mobile-safari gwt2


【解决方案1】:

在某些情况下(不幸的是,由于 IE 排除了按钮),您可以只添加 DOM 元素和/或使用 innerHTML(在 DOM 元素上,在这种情况下不要使用面板小部件)并在更高级别监听事件(通常是您的 UiBinder 所有者小部件),利用事件冒泡。换句话说:使用通常所说的“事件委托”。

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多