我有一个ClientBundle,其中包含整个应用程序所需的css资源 - 默认背景颜色,常见布局模式等.
GWT 规定的设计目标是"对于多个ClientBundle资源函数引用相同内容不会受到惩罚".我是否必须做任何事情以避免处罚并帮助ClientBundle实现这一目标?
一种天真的方法就是添加
<ui:with field="appWideResources"
type='com.activegrade.client.resources.appwide.AppWideResources' />
Run Code Online (Sandbox Code Playgroud)
在每个UiBinder文件的顶部.但是,在我的22亿UiBinder文件中,这将创建22亿个AppWideResources实例,每个实例都有不同的冗余混淆等等?
你可以这样做或通过这种@UiFactory
方法,也不会花费你额外的费用.GWT只会实例化一次资源集,并与引用该集合的每个文件共享该单个实例.
"...每次调用GWT.create()
(它ui:with
会做什么)它将实例化一个新对象,但是所有资源ClientBundle
都被初始化为静态字段,因此每个实例只是这些静态字段的一个非常轻量级的"代理";并且GWT编译器最终将对其进行优化,(几乎)就好像你有一个单例实例一样." (托马斯布鲁耶)
归档时间: |
|
查看次数: |
224 次 |
最近记录: |