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



我们正在使用GWT构建一个大型企业应用程序(包含数十个模块),需要决定是否使用ClientBundle。我很好奇对于这样一个用例,StackOverflow GWT社区是如何看待作为交易撮合者和交易破坏者的利弊的。

目前我们看到的是:

优点

  • 所有占用服务器资源下载的图像/css文件将被删除
  • 客户端加载速度更快,因为上面(即内联图像url)
  • CSS名称是混淆的,所以名称空间冲突被消除
  • CSS自动优化/验证
  • 未使用的CSS类被消除(以上)
  • Java对类名的引用被替换为可重构的css接口
  • 用可重构的css接口代替对类名的引用
  • 不再有大的"main.css"失败,因为资源是特定于模块包的

缺点

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

谢谢!

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

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

几乎所有的CSS3规则都可以通过使用literal函数在ClientBundle中使用,所以这应该没问题。@media查询有点小技巧。你可以注入css作为一个简单的textresource作为一个解决方案,但它有点丑。

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

我在几个大的gwt应用中使用过clientbundles,对我来说,编译时检查和重构支持胜过了客户端bundle中仍然存在的小怪癖。

再补充两点:

  • 在GWT中有一个实用程序,它允许为您的CSSResources自动创建接口
  • 确实,由于名称混淆,调试样式可能有点麻烦。通过使用Firebug直接在浏览器中更改开发模式下的样式,我取得了很好的成功,当我满意时,我在GWT应用程序中更改它们。

最新更新