gwt单独的模块没有代码共享

时间:2010-05-25 21:41:38

标签: javascript web-applications gwt

我必须使用GWT制作一个Web应用程序。该项目有一个核心模块,它将公开一组apis供其他应用程序使用;这些app中的每一个都是无关的。每个都应加载在一个单独的iframe中。

我的想法是将core编译成core.js,每个app都有自己的app1.js app2.js等等......

App1的

script type="text/javascript" src="core.js" ></script>
script type="text/javascript" src="app1.js" ></script>

有了这个设计,由于浏览器缓存,每个应用程序只加载应该小于〜20kb的app.js。

制作核心模块非常简单,但应用程序存在问题。原因是在编译之后,每个应用程序都包含整个GWT库 - 这大大增加了完整Web应用程序的下载大小。

有人能建议一种解决这个问题的方法吗?我在SO上检查了类似的问题,但未能找到问题的简单工作答案。

1 个答案:

答案 0 :(得分:4)

无法做到。

GWT意味着是一个单一的编译。它将占用你所有的java代码,假设除了提供给它之外没有其他代码存在,然后生成优化的javascript代码。这样做时,它只会编译程序实际使用的标准GWT库的部分内容。

由于GWT的工作方式,在同一页面上包含多个GWT模块总是效率低下。

相反,这是我建议的 -

  1. 每个应用程序有一个GWT模块,而不是每页一个。将两个模块放在同一页面上绝对是不对的
  2. 在模块之间共享java代码,而不是javascript。这意味着您的共享库永远不会被编译为javascript