GWT - 多个模块?

时间:2010-02-16 16:50:21

标签: gwt

我正在努力使我的GWT应用程序的结构正确。 (我是唯一一个发现GWT代码很容易变得非常混乱和不可读的人吗?)

该应用程序应该是几个相当的接口 不同的领域 - 让我们说区域A和B.目前我正在尝试 将它实现为具有两个选项卡的界面 - 一个将您带到A区 一个带你去B区。我看不出我怎么能有一个好的 以这种方式分离两个不同区域所需的代码 虽然 - 应用MVP模式(我实际上没有发现如何在像我的标签这样的分层界面的情况下如何做)我最终得到了区域A和区域B 例如,client.view和client.presenter中的代码 包:

src
 - main
     - java
         - client
             + event
             - presenter
                 + a_stuff
                 + b_stuff
             - view
                 + a_stuff
                 + b_stuff
 :

我无法找到任何关于如何以及何时使用多个的好例子 模块,我想知道我的情况是否可能是多个 模块会有意义吗?在这种情况下如何构建代码?

可能有必要提一下我使用的是最新的GWT,Maven和IntelliJ IDEA。

提示将不胜感激, 非常感谢Stine:)

4 个答案:

答案 0 :(得分:10)

这是一个更全面的示例,帮助我让两个模块工作: http://ashtoncthomas.blogspot.com/2011/02/multiple-modules-in-google-web-toolkit.html

它使用结构:

src
 - main
     - java
         a_stuff.gwt.xml
         b_stuff.gwt.xml
         - client
              - shared_stuff
              - a_stuff
                   - presenter
                   - view
              - b_stuff
                   - presenter
                   - view

如果你想要两个HTML页面 - 每个模块一个(就像我一样),那么你需要创建两个页面:

war
  page_a.html
  page_b.html

并在两个.gwt.xml文件中定义您的入口点,例如(对于a_stuff.gwt.xml):

<module rename-to='module_a'>

    ... your stuff here ...

    <entry-point class="main.java.client.a_stuff.A_entry_point"></entry-point>
</module>

其中A_entry_point是实现EntryPoint的类。

然后,在您的HTML页面中,只包含您想要的模块(例如,在page_a.html中):

<script type="text/javascript" language="javascript" 
        src="module_a/module_a.nocache.js"></script>

另外,如果你正在使用Eclipse,那么当你点击&#34; GWT Compile Project&#34;时,它会要求你&#34;添加一个入口点类#34;所以你必须点击&#34;添加&#34; &#34;入口点模块中的按钮&#34; GWT Compile窗口的一部分,并添加两个入口点模块(a_stuff.gwt.xmlb_stuff.gwt.xml)。您可以根据需要从此处添加/删除入口点模块,以选择要编译的模块。

以上对我有用。我用它来制作我网站的两个不同版本,每个版本都在一个单独的模块中。

答案 1 :(得分:2)

考虑在yourmodule.gwt.xml文件中声明多个源元素。如果没有声明源元素,则默认情况下gwt采用“客户端”声明。见下文:

<!--Default if not declared-->
<source path="client"/>

您可以声明多个源位置,如下所示:

<source path="a_stuff"/>
<source path="b_stuff"/>

现在每个源下面的所有内容都将被编译。 “客户”只是默认值,而不是规则。

答案 2 :(得分:0)

我建议这样的事情:

src
 - main
     - java
         + a_stuff
           -client
             - presenter
             - view
             - event
         + b_stuff
           -client
             - presenter
             - view
             - event

答案 3 :(得分:0)