GWT模块设计

时间:2013-04-01 10:50:20

标签: gwt

我有一个包含两个组件的应用。 面向提交餐厅订单的客户。 面向观看餐馆订单的供应商。

我是否应该有两个具有不同入口点的模块,因为组件之间没有共享代码(域模型对象除外)?

4 个答案:

答案 0 :(得分:0)

有一个原因我可以想到为什么你可能想要这样做 - 这是为了减少下载量,因为客户可能不会使用某些屏幕/逻辑(并且你希望客户页面加载速度快尽可能)。但是,您也可以通过代码拆分实现此目的:https://developers.google.com/web-toolkit/doc/latest/DevGuideCodeSplitting

我认为有两个模块也很好。没什么大不了的。

答案 1 :(得分:0)

如果您不打算在两个单独的节点上部署它们,我会使用一个模块。因为你只需要维护一个I18n文件,减少静态文件(html),所以只有一个模块描述符(没有重复)。

如果您决定只使用一个模块,那么代码拆分是一件好事,可以考虑减少JS用户必须下载的大小。

答案 2 :(得分:0)

没有100%正确答案,这实际上取决于你的项目。

分离成两个编译模块可能是个好主意,如果您的公共逻辑的大小(必须在两个模块之间共享)与客户/供应商特定逻辑相比非常小,而且大多数情况下您正在编写代码仅限客户/供应商。在这种情况下,您将在开发模式下获得更快的刷新时间,并将各个模块更快地编译到所有内容合并在一起的情况。 但是,在某些时候,可能需要创建合并的客户/供应商模式,因为有些用户同时是客户和供应商。

我个人更喜欢方法,当应用程序的不同逻辑部分获得自己的gwt模块时,然后有一个根模块将所有这些模块链接在一起,另外还有几个DevOnly模块,它们允许您只启动一些特定的模块申请的一部分。示例模块结构:

  • 客户模块 - 不单独编译,取决于Common模块
  • 供应商模块 - 不单独编译,取决于通用模块
  • 通用模块 - 未单独编译
  • App 模块 - 单独编译,取决于客户和供应商模块
  • VendorStandalone 模块 - 单独编译,取决于供应商模块,仅用于 发展
  • CustomerStandalone 模块 - 单独编译,取决于客户模块,仅用于开发

这种结构允许您拥有快速开发模式(如果可能的话),同时您准备好供应商&客户功能必须一起提供。

答案 3 :(得分:-1)

我选择的设计(使用MVP ):

1)单个模块

2)相同的登录页面(用户pojo必须具有类型vendorcustomer)。

3)在OnmoduleLoad基于类型I'l打开对应vendor or customer presenter

为什么?

1)代码可重用性。

2)减少2个模块的维护。

好吧,我也在等待更多设计方案。

Please refer