12

我对 GWT 是否可以作为我的整个表示层的基础感兴趣。

我很想知道是否有人成功地尝试过 - 或不成功 - 并且可以说服或不说服我尝试这个。

4

7 回答 7

7

大约一年前,我与 GWT 合作过。当时这似乎是一个好主意,但有一些警告:

  • 我在 API 的某些部分遇到了“陷阱”问题,这可能与您像在 Java 中一样进行编码的事实有关,而实际上您实际上是在为一个像 Java 一样的单独编译的环境编写代码,所以你做了一些不正确的假设(在这种情况下,将嵌套值传递给前端)。我认为还有另一个是重写我的 ant 脚本以使用 32 位 jvm 进行 gwt 编译。
  • 我花了一些时间试图调整外观——我们从未部署完成的项目,所以我不确定要达到专业水平需要做多少工作,但它似乎(逻辑上)会是相当于调整一个摇摆界面。在视觉上,可能比 html 更笨拙。
  • 因为在最终产品中 ajax 对你来说是如此隐蔽,所以我担心如果性能不佳我可能会做什么。

话虽如此,它似乎绝对值得一玩,而且我的经历是很久很久以前的互联网时代,特别是考虑到它现在可能更加成熟。还值得指出的是,这是从大多数 MVC 框架开发 GUI 代码的一种非常不同(且令人耳目一新)的方式,如果没有其他原因,值得一看。

我的感觉是,如果您正在构建一个对图形要求非常苛刻的高负载专业站点,GWT 可能不是一个好的选择,否则还可以。

于 2009-04-13T17:23:29.990 回答
2

您提到 GWT 将处理表示层。你也会用 Java 做业务层吗?如果是这种情况,我想向您介绍IT Mill Toolkit,它正是这样做的:它是一个使用 GWT 呈现其 GUI 组件的工具包,允许您完全用 Java 来完成您的应用程序。我认为它试图创造的术语是“服务器驱动的 RIA”。

我来自 PHP 背景,但很快就喜欢上了这个工具包。不过我还是不要多说,让你自己做决定可能会更好。

Disclamer:我确实在 IT Mill 工作,尽管这与我的观点无关。

于 2009-04-14T05:36:01.383 回答
1

GWT 相对较新。随着代码库的增长,编译过程往往会变得有点慢。当我们使用它时,我们发现更复杂的小部件的布局和渲染存在许多问题,并且模拟器的行为与真实服务器完全不同。此外,对于从右到左的语言,我们在 i18n 上遇到了麻烦......

总而言之,GWT 存在(通常?)年轻技术的问题。但是,它确实使某些事情变得非常容易,例如您命名的 Ajaxifying。

于 2009-04-13T16:52:41.810 回答
1

我们已经为一个非常大的项目做到了这一点,只要您知道它的局限性、优势和劣势,它就可以很好地工作。有趣的是,演示是我们最省事的,因为我们只是像处理任何其他 HTML 页面一样使用 CSS 对其进行了皮肤处理。该项目上线,运行完美,所以我没有抱怨。

我发现的陷阱你可以在这里找到:

最大的 GWT 陷阱?

于 2009-04-14T05:13:18.800 回答
1

我们开发了一个大型 HR Portal 应用程序,整个表示层在 GWT 中完成。后端是Spring。一切都运行良好,用户界面非常受用户欢迎。非常重要的是,我们很容易添加新功能和维护应用程序。我认为使用 Javascript 库做一些可比较和可维护的事情要困难得多。

您确实需要某种客户端框架,否则您最终会编写一个(就像我们一样!):我们的应用程序构建在GWT Portlets(免费和开源)之上。

我们使用 HTML 片段为不同部署的应用程序设计皮肤,每个“页面”的布局都存储在 XML 文件中。

于 2009-08-19T19:37:20.347 回答
0

关于这个 raible 视频的一些很好的信息:http ://raibledesigns.com/rd/entry/my_drunk_on_software_interview

于 2009-04-14T05:56:39.460 回答
-1

GWT 本身就是一个 UI 增强库,而不是一个框架。如果您将它与 Google App Engine 一起使用,那么您就有了一个基本框架。(这是一个不同的故事,当我看到它时,我决定不将它包含在我们的架构中)。

这是一个很棒的图书馆,我们用它做了一些了不起的事情。然而,由于它是一个库,它只能在您的架构允许的范围内发挥作用。

就 ANT 而言,64 位编译器没有问题。

<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler" dir="${dir.GWTCompile}"> <-- dir.GWTCompile 是包含 GWT 的目录 --> <classpath> 类路径 </classpath> <jvmarg value="-${gwt.maxMem}"/> <arg value="@{gwt.baseModule}" /> <arg value="DEBUG" /> <arg value= “-严格” /> </java>

至于生成的代码,如果您想查看它,它就在您的战争中。(它也是开源的,所以你可以在那里查看。)

GWT 在编译过程中所做的事情:它为不同的浏览器集创建了多个 JS 库副本(一个可能需要几分钟编译的原因),您可以根据需要添加/删除这些。这减少了需要下载的 JS 包并提高了速度,因为它不必有那些讨厌的 if (EI) this else if (FF) that。但是,当您进行本地调试(至少在 Eclipse 中)时,您不必等待,允许将其留给构建服务器(或者当您需要手动构建和部署时(尼安德特人))。

GWT 的缺点。由于它是一个 javascript 客户端(几乎完全是),因此您不能将它用于不支持它或支持其中一个版本的东西。因此,对于 iPad 和 iPhone 之类的东西,如果您不使用旨在弥合这些差距的其他库(例如 mgwt),您可能会遇到一些问题。

于 2014-09-03T18:40:09.807 回答