在大型企业应用程序中使用ClientBundle?

时间:2011-11-07 21:39:46

标签: gwt

我们正在使用GWT构建一个大型企业应用程序(几十个模块),需要决定是否使用ClientBundle。我很好奇StackOverflow GWT社区作为交易制定者和交易破坏者对这种用例的利弊。

目前我们看到它:

赞成

  • 取消了下载服务器资源的所有图像/ css文件
  • 由于上述内容(即内联图片网址),客户端加载速度更快
  • CSS名称被混淆,因此消除了命名空间冲突
  • 自动优化/验证CSS
  • 消除了未使用的CSS类(上图)
  • 对类名的Java引用将替换为可重构的css接口
  • UiBinder对类名的引用被替换为可重构的css接口
  • 没有更大的“main.css”失败,因为资源是特定于模块包的

缺点

  • 对于维护,CSS在混淆模式下变得不可读,或者在调试模式下变得非常冗长
  • 基本CSS工作所需的更多步骤(如添加课程)
  • 所有开发人员必须了解Java,CSS,HTML细微差别
  • GWT本身不支持CSS3和其他at-rules(即@ font-face)
  • 增加编译时间

谢谢!

2 个答案:

答案 0 :(得分:8)

我一直在m-gwt中大量使用客户端捆绑包。

困扰我的一件事是为没有开发模式的设备设计样式。因此,样式可能意味着重新编译完整的应用程序。

大多数CSS3规则都可以通过使用文字函数在ClientBundle中使用,所以应该没问题。它与@media查询有点小问题。你可以将css注入一个简单的textresource作为一种解决方法,但它有点难看。

当您谈论几个gwt模块时,请考虑使用多个clientbundle,这样您仍然可以使用分割点来控制下载文件大小(取决于.js文件的大小)

我在几个大gwt应用程序中使用了clientbundles,对我来说,编译时检查和重构支持比正在客户端包中的小怪癖还要好。

答案 1 :(得分:2)

只需另外两个注意事项:

  • GWT中有utility可用于自动创建CSSResources的接口
  • 由于模糊的名称,调试样式确实有点麻烦。通过使用Firebug直接在浏览器中更改dev模式中的样式,我取得了很好的成功,当我满意时,我在GWT应用程序中更改了它们。