0

我有一个包含两个组件的应用程序。一位客户面临提交餐厅订单的问题。一个供应商面对一个查看餐厅订单的供应商。

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

4

4 回答 4

0

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

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

于 2013-04-01T11:29:11.720 回答
0

如果您不打算将它们部署在两个单独的节点上,我会选择一个模块。因为您只需要维护一个 I18n 文件,较少的静态文件 (html),因此将只有一个模块描述符(无重复)。

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

于 2013-04-01T11:41:03.507 回答
0

不可能有 100% 的正确答案,这真的取决于你的项目。

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

我个人更喜欢这样的方法,当应用程序的不同逻辑部分拥有自己的 gwt 模块,然后有一个根模块将它们链接在一起,再加上你有几个 DevOnly 模块,它允许你只启动应用程序的某些特定部分. 示例模块结构:

  • 客户模块 - 不单独编译,依赖于通用模块
  • Vendor模块 - 不单独编译,依赖于 Common 模块
  • 公共模块 - 不单独编译
  • 应用程序模块 - 单独编译,取决于客户和供应商模块
  • VendorStandalone模块 - 单独编译,依赖于 Vendor 模块,仅用于开发
  • CustomerStandalone模块 - 单独编译,依赖于 Customer 模块,仅用于开发

这样的结构允许您拥有快速开发模式(如果可能的话),同时您为必须同时提供供应商和客户功能的情况做好准备。

于 2013-04-01T21:03:45.597 回答
-1

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

1)单模块

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

3)在OnmoduleLoad基于类型我会打开相应vendor or customer presenter

为什么??

1)代码可重用性。

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

好吧,我也在等着看更多的设计选择。

请参考

于 2013-04-01T11:17:24.410 回答