2013-04-01 95 views
0

我有一个应用程序与两个组件。 面向提交餐馆订单的客户。 面向查看餐馆订单的供应商。GWT模块设计

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

+0

我觉得单个条目会很好。如果我在你的地方可能会这样做 - 提供供应商检查订单的安全“密码”,并且所有客户都可以下订单而不看其他订单。 – Dipak

+0

供应商和客户之间的订单pojo不常见吗? –

+0

其实你是对的......有一些共同的模型代码。 –

回答

-1

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

1)单个模块

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

3)在OnmoduleLoad基于类型I'l开放通讯vendor or customer presenter

为什么?

1)代码重用性。

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

那么,我也在等着看更多的设计选择。

Please refer

+0

为什么不能在两个模块之间重复使用代码?代码重用对我来说似乎没有问题。 –

+0

@DD。这一点与供应商和供应商的单独登录页面有关(*如果你将要这样设计*)。 –

0

还有一个原因,我能想到的,为什么你会想这样做 - 这是为了减少下载量,因为一些画面/逻辑可能不被客户所使用(和你想客户页面尽可能快地加载)。不过,你也可以通过代码拆分来实现:https://developers.google.com/web-toolkit/doc/latest/DevGuideCodeSplitting

我认为有两个模块也不错。那里没什么大不了的。

0

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

如果你决定只使用一个模块,代码拆分是一个好的事情来考虑减少JS用户必须下载的大小。

0

不能100%正确的答案,它取决于你的项目。

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

我个人比较喜欢这种方法,当应用程序的不同逻辑部分获得自己的gwt模块,然后有一个根模块将所有这些模块链接在一起,再加上你有几个DevOnly模块,这些模块允许你只启动一些应用程序的特定部分。示例性模块结构:

  • 顾客模块 - 不单独编译,取决于公共模块
  • 卖方模块上 - 不是单独编译,取决于公共模块
  • 普通模块上 - 不是单独编译
  • App模块 - 单独编译,取决于客户和供应商模块
  • VendorStandalone模块 - 单独编译,取决于供应商模块,仅用于 发展
  • CustomerStandalone模块 - 单独编译,取决于客户模块,仅用于发展

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