我有一个 ClientBundle,其中包含整个应用程序所需的 css 资源 - 默认背景颜色、常见布局模式等。
一位表示设计目标 http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html#ClientBundle_Goals来自 GWT 的一点是“多个 ClientBundle 资源函数引用相同内容不会受到任何惩罚”。我需要采取什么措施来避免处罚并帮助 ClientBundle 实现这一目标吗?
一个天真的方法就是添加
<ui:with field="appWideResources"
type='com.activegrade.client.resources.appwide.AppWideResources' />
位于每个 UiBinder 文件的顶部。但是,在我的 22 个 UiBinder 文件中,这是否会创建 22 个 AppWideResources 实例,每个实例都有不同的冗余混淆等?
你可以这样做或者通过@UiFactory
方法,并且都不会花费您任何额外费用。 GWT 只会实例化一个资源集一次,并与引用该资源集的每个文件共享该单个实例化。
“……每次你打电话的时候GWT.create()
(其中一个ui:with
会做)它将实例化一个新对象,但该对象中的所有资源ClientBundle
被初始化为静态字段,因此每个实例只是这些静态字段的一个非常轻量级的“代理”; GWT 编译器最终会对其进行优化,(几乎)就像您有一个单例实例一样。”(Thomas Broyer)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)