4

我的团队由更多的 Java 人员和有限的 JavaScript 经验组成。我知道这个问题已经被问过好几次了,但为了让我的事实正确,我需要澄清一些事情,因为我在客户端技术方面的经验非常有限。我们决定使用 GWT 而不是纯 JavaScript 框架来构建我们的解决方案(鉴于有更多的 Java 经验)。

这些都是支持我决定的事实。

  • 100% 用 Ja​​va 编写
  • 需要基本的 Java 技能(Java SE 而不是 Java EE)
  • OOPHM – 进程外托管模式 – 定义您的浏览器和版本。浏览器兼容性不再是我们的问题
  • 调试 – 使用 IDE 的调试器调试您的 GWT 应用程序,就像任何其他 Java 应用程序一样
  • 优化的 JavaScript - GWT 比您编写更快、更紧凑的 JavaScript

但是我的一些应用功能需要用到外部的js库。例如,假设我需要使用一些特定的 js 库在特定页面上绘制一些东西。(其实就是用dojos写的那个js文件)。

  1. GWT 可以满足上述要求吗?
  2. 您认为选择 GWT 的决定是明智的还是有其他建议?
  3. 我们发现 sencha gxt 拥有最好的小部件库(我知道它的商业性,至少我找到了我们需要的所有小部件)。你认为在核心 GWT 上使用包装库是一个明智的主意吗?

提前致谢。

4

3 回答 3

3

GWT 可以满足上述要求吗?

是的(见@Andrey Kapelchik 的回答)。

您认为选择 GWT 的决定是明智的还是有其他建议?

鉴于您的背景和您提到的几点,我认为这是一个非常好的决定。我已经使用 JavaScript、jQuery 等构建了应用程序,但是对于超过 1000 行代码的任何内容,我不想再次“手动”构建 JavaScript 应用程序。对我来说决定性的几点:

  • 使用 GWT,我可以在服务器端和客户端重用部分代码。例如,我可以在客户端验证以提供即时反馈,然后使用相同的代码在服务器上再次验证以确保安全。
  • 我发现在大型 GWT 项目中我的方式要容易得多。虽然以清晰的方式排列甚至大型 JavaScript 代码当然是可能的,但它总是变得笨拙。
  • 我一直在大量使用 IDE 功能(重构、查找对字段的写访问权限,...),而 IDE 对 JavaScript 的支持对我来说太有限了。

你仍然需要一点点 JavaScript 知识。您的团队绝对应该学习 CSS,我建议您彻底学习它——无论您选择哪种客户端框架。

我们发现 sencha gxt 拥有最好的小部件库(我知道它的商业性,至少我找到了我们需要的所有小部件)。你认为在核心 GWT 上使用包装库是一个明智的主意吗?

在我正在进行的几个项目中,我们使用 GXT,因为这个决定是几年前做出的。以下是我的看法:如果你需要构建一个看起来非常像桌面应用的东西,GXT 可能是完美的,否则我不建议将应用基于GXT。

使用纯 GWT 可以获得最佳性能,如果您了解 CSS,它会更加灵活。GXT 有一些不错的功能,但要解决它的局限性、重大的性能问题(有时还有它的错误)可能非常耗时。如果你真的需要一个特殊的 GXT 小部件,你仍然可以构建一个纯 GWT 应用程序,然后只添加一个 GXT/SmartGWT 小部件。

于 2012-08-08T09:21:05.427 回答
2

我认为 GWT 非常适合您所描述项目的要求和目标。GWT 有JavaScript Native Interface来使用原生 JavaScript。JSNI 允许将 GWT 与现有 JavaScript 或外部 JS 库集成。它通过允许您将 JavaScript 直接集成到应用程序的 Java 源代码中来解决这些问题。

于 2012-08-08T07:25:49.960 回答
1

在许多错误的开始之后,我的团队真的在这个问题上苦苦挣扎,我们确定 JavaScript 无法真正避免,掌握它并没有我担心的那么糟糕。升级 GWT 所需的时间与升级客户端 JS MVC 框架所需的时间大致相同。

我们确实考虑过 GWT,但放弃了它,因为从长远来看,由于以下原因,它会更难维护。

  • 如果 GWT 的开发人员对维护它失去兴趣,那么维护像 GWT 这样的东西需要非常复杂的技能。
  • 我们可能想要的小部件可能可用于其他 GWT 并且移植到 GWT 可能比我们想要做的工作更多。
  • 现代 JavaScript MVC 框架变得非常成熟,具有许多非常酷的功能,可以轻松开发复杂的单页应用程序。
  • 浏览器会变得更好,JS 框架会变得更好,高级前端开发人员会更容易......等等。

我们还评估了 dojo 并放弃了它,因为我们觉得定制它对我们的团队来说太难了。这就是我们最终的结果。

  1. 用于 CSS / 小部件框架的 Twitter Bootstarp
  2. 一堆不同的 jquery 插件从网上的各个地方争吵起来
  3. 用于客户端 MVC 框架的 JQuery、Backbone、Handlebars。

如果我今天再次开始这个项目,我会选择 Google 的 AngularJS,它确实是构建客户端 Web 应用程序的绝佳方法。尤其是因为在 JavaScript 中巧妙地使用了依赖注入以及双向绑定和一堆其他东西。我在 Throne of JS 会议上,谷歌 AngularJS 的人说他们将 17,000 行 GWT 应用程序移植到 2500 行 angularJS 应用程序。

于 2012-08-08T07:25:55.583 回答