如何使用JQuery加载GWT模块?

我们的应用程序有许多大型GWT模块随着时间的推 架构是Servlets / JSP和GWT。

我在这里简化。
Link1.jsp包含Link1 GWT module
Link2.jsp包含Link2 Gwt module
Link3.jsp包含Link3 GWT module

所有上述3个jsps都是相同的,即包括相同的页眉和页脚。 只有机构正在根据GWT模块进行更改。

现在,我们正在尝试在用户点击上述链接时提高性能。 当用户点击Link1.jsp ,请求被发送到服务器,响应将在500-700ms回复。(我们在印度,因此存在延迟问题 )用户抱怨每个链接的应用程序运行缓慢单击。

因此,我们正在尝试以下方法:由于所有jsps完全相同且只有正在更改,我们决定不对上述链接进行default href request ,我们尝试使用单击链接加载不同的GWT模块JQuery的。

我刚才回答了这个问题。 基本上,使用xsiframe链接器编译模块,并使用dinamically生成的标记加载模块:

 $("#clickMe").click(function() { $('body').append($("")); } 

更新:

试图弄清楚为什么你需要这种架构,IMO可能你正在尝试一个错误的解决方案。

如果您的所有应用程序都基于GWT模块,为什么要引入外部JavaScript库?

GWT有自己的机制来面对加速初始加载的问题。 我认为你应该创建一个super-gwt模块,其中包含你的应用程序中的所有子模块。

  • 超级模块将是您应用中的唯一EntryPoint ,并负责处理您的jsp中的链接。 可能我会将gwtquery用于该模块,但这取决于你。
  • 应使用代码分割加载其他模块,因此它们不是EntryPoint而是RunAsyncCallback

这种解决方案的优点很多。 并且您将拥有一个非常快速加载的应用程序:

  • 你不加载像jquery这样的外部库:大约100KB压缩。
  • 加载的第一个片段是超小的,如果你使用gquery可能是30-50 KB(比jquery本身少得多)
  • 模块共享的许多代码(gwt-core,jre等)可以转到第一个片段,并由所有模块共享,从而减少每个模块的最终下载大小。
  • 这是一个开箱即用的解决方案,gwt编译器可以很好地分割代码并添加所有内容以在需要时异步加载它。
  • 正确配置您的Web服务器,客户端将永久缓存该应用程序。
  • Java生态系统促进模块化应用

GWT-2.5.1中减少js大小的另一个选项是:

  • 删除堆栈代码:
  • 预压缩您的js文件:
  • 使用闭包编译器: -XenableClosureCompiler
  • 删除类元数据: -XdisableClassMetadata
  • 禁用铸件: -XdisableCastChecking
  • 优化代码分割: -XfragmentCount 20