3

我听说 Google Web Toolkit 对于超过 5 个页面和通用布局的网站不太适用。真的吗?我们至少有 100 个子页面和 CSS 中定义的通用布局。今天使用的是 PHP,但我们将转向 Java 前端,无论是 Spring MVC 还是 GWT。我们正在使用 som jQuery AJAX 和其他 jQuery 组件,例如 jqGrid。我们还有一些 .swf 电影和融合图表。选择结合 GWT 的 Spring 是一个不错的选择,还是带有 jQ​​uery 库的 Spring MVC 对我们来说是一个更好的选择?

4

5 回答 5

5

现在不是真的。早期的 GWT 版本确实存在一些可伸缩性问题(例如 IE 中的 JS 代码大小问题 - http://code.google.com/p/google-web-toolkit/issues/detail?id=1440),但从 GWT 2.0 开始你在这里没有限制。

此外,最新的 GWT 版本支持将项目拆分为可在需要时动态加载的部分的功能。请参阅https://developers.google.com/web-toolkit/doc/latest/DevGuideCodeSplitting以了解其工作原理。

还要考虑到由于 Spring 是 Java,您可以在服务器端和客户端之间共享类。此外,Java 在 IDE 中有很好的支持——所有类型的重构都可供您使用(如果您使用 jQuery,它就不那么方便了)。

所以 Spring+GWT 看起来是更可取的选择。

于 2012-04-04T12:50:26.917 回答
3

GWT 不是一个从头开始构建任何 web 应用程序的通用框架。当您在客户端有很多复杂的逻辑时(图像编辑、实时协作、图表绘制、游戏、复杂的报表构建等),它非常有用。但是所有这些都可以在没有 GWT 的情况下完成。GWT 可用于以下情况:

  • 你的团队讨厌/不喜欢 JS(并且无法用 JS 构建任何复杂的东西,只是因为他们讨厌 JS)
  • 您的团队在 Java 方面非常有经验
  • 您的团队了解所有这些与浏览器相关的东西是如何工作的(HTTP、JS、DOM、CSS 等)
  • 在这个项目中将有很多在客户端运行的逻辑

我见过很多完全使用 GWT 构建的大型项目。他们中的一些人永远不应该使用 GWT,因为他们没有理由以这种方式使用它。对于大多数项目,仅将 GWT 用于应用程序的某些部分就足够了。

选择取决于您的团队和您正在做的项目。如果您的团队无法真正看到 GWT 将为项目带来什么好处,那么您不应该使用 GWT。

于 2012-04-04T14:56:16.493 回答
1

我们的企业级应用程序同时利用了两者,我们对结果非常满意。GWT 是一个功能强大的工具包,可将开发时间缩短几个数量级。也就是说,GWT 仍然有一些事情不能很好地处理,或者只是简单地不适合(这没关系......这就是 Spring MVC 就在附近的原因)。我们让 GWT-RPC 直接访问 Spring 服务,它运行得非常好。

我们的项目虽然是一个真正的 web 应用程序,而不是一个网站。我们使用跨越所有“页面”的统一设计(使用 aDockLayoutPanel并仅换出center使这变得超级容易)。

IMO,无论谁告诉你 GWT 不适合在众多“页面”上进行一致的设计,都是疯了……

于 2012-04-04T12:31:06.020 回答
0

根据我对 GWT 的经验,我唯一不好的经验是由于大量排列导致 GWT 编译缓慢。我们的应用程序有超过 20 种语言需要支持,对于特定的浏览器,乘以 6 会产生 120 种排列,结果证明性能很糟糕。

但这不是一个真正的错误问题,因为您将主要使用开发模式,即时代码更新,并且您可以拥有减少浏览器和语言集的特殊编译单元(即使是一种语言和一种浏览器 => 一个排列如果你希望)。

因此,在我的例子中,使用 Jenkins,我们在夜间完成了大产品目标的完整构建,部署在 QA 平台上,以便 QA 团队测试每种浏览器语言组合。在每次提交时,都会在开发验证平台上部署一个精简的构建(在我们的例子中是 1 个浏览器和 2 种语言)。

GWT 绝对是大型应用程序的绝佳工具。;)

于 2012-04-04T12:46:39.480 回答
0

我认为任何关于 GWT(或任何其他方法)将开发时间降低一个数量级的断言已经被 Frederic Brooks 在肩垫和 Jan Hammer 的合成器流行的时候揭穿了:http ://en.wikipedia.org/维基/No_Silver_Bullet

但说真的,如果你是一家 PHP 商店,转向 100% Java 将是一项巨大的投资,不能掉以轻心。

于 2012-04-04T12:38:50.420 回答