0

我是 GWT 的新手,很难理解ModuleClientBundle之间的根本区别。在 GWT 文档的某些领域,两者似乎是同一件事,而在其他领域,它们显然是不同的。

我的理解是,模块是部署到用户浏览器的客户端代码。这是一个包含 HTML、CSS 和 JS 的 ZIP 文件。

我的理解是ClientBundle类似于Module,只不过它只包含图片等静态资源。

如果这些理解是正确的,那么为什么需要区分两者呢?HTML/CSS/JS 不也是静态资源吗?!?如果我偏离了基础,请帮助我了解差异是什么,并可能提供每个的具体示例以及何时适合使用每个示例。提前致谢!

4

1 回答 1

4

您对模块有了正确的认识——它(在开发方面)描述了要使用的 java 源路径、开始编译的入口点以及编译时要使用的各种属性(浏览器、语言环境)。编译后,模块也代表输出 - javascript 和任何相关的其他编译文件,无论是日志、图像、样式表等。

相比之下,ClientBundle 是开发人员可以告诉编译器 java 源路径中的某些资源在编译后将被使用的一种方式。CssResource 附带额外检查是否使用了 css 样式名称(如果没有,则应将其删除以最小化编译输出),ImageResource 确保文件在编译时存在,并且都以针对每个浏览器的最佳优化方式输出这些文件。大多数浏览器的图像实际上都包含在庞大的 JS 文件中,以最大限度地减少对服务器的调用次数,对于不支持此功能的那些,它们会自动组合在一起。

通过声明 ClientBundle 接口并调用GWT.create(MyClientBundle.class),您要求编译器处理 ClientBundle 细节,以使这些引用的文件和类在您的应用程序中可用。它与 GWT 生成器有什么关系,这是一个比 SO 答案更高级的主题......

是的,ClientBundles描述了正在运行的应用程序所需的静态资源,是的,一个编译的模块各种静态资源组成,但我会改写你的理解,这样说:ClientBundle 是可以包含静态内容的方式之一在 GWT 模块中,以使其尽可能高效地加载。

于 2012-08-22T04:36:00.327 回答