我对 GWT 是否可以作为我的整个表示层的基础感兴趣。
我很想知道是否有人成功地尝试过 - 或不成功 - 并且可以说服或不说服我尝试这个。
我对 GWT 是否可以作为我的整个表示层的基础感兴趣。
我很想知道是否有人成功地尝试过 - 或不成功 - 并且可以说服或不说服我尝试这个。
大约一年前,我与 GWT 合作过。当时这似乎是一个好主意,但有一些警告:
话虽如此,它似乎绝对值得一玩,而且我的经历是很久很久以前的互联网时代,特别是考虑到它现在可能更加成熟。还值得指出的是,这是从大多数 MVC 框架开发 GUI 代码的一种非常不同(且令人耳目一新)的方式,如果没有其他原因,值得一看。
我的感觉是,如果您正在构建一个对图形要求非常苛刻的高负载专业站点,GWT 可能不是一个好的选择,否则还可以。
您提到 GWT 将处理表示层。你也会用 Java 做业务层吗?如果是这种情况,我想向您介绍IT Mill Toolkit,它正是这样做的:它是一个使用 GWT 呈现其 GUI 组件的工具包,允许您完全用 Java 来完成您的应用程序。我认为它试图创造的术语是“服务器驱动的 RIA”。
我来自 PHP 背景,但很快就喜欢上了这个工具包。不过我还是不要多说,让你自己做决定可能会更好。
Disclamer:我确实在 IT Mill 工作,尽管这与我的观点无关。
GWT 相对较新。随着代码库的增长,编译过程往往会变得有点慢。当我们使用它时,我们发现更复杂的小部件的布局和渲染存在许多问题,并且模拟器的行为与真实服务器完全不同。此外,对于从右到左的语言,我们在 i18n 上遇到了麻烦......
总而言之,GWT 存在(通常?)年轻技术的问题。但是,它确实使某些事情变得非常容易,例如您命名的 Ajaxifying。
我们已经为一个非常大的项目做到了这一点,只要您知道它的局限性、优势和劣势,它就可以很好地工作。有趣的是,演示是我们最省事的,因为我们只是像处理任何其他 HTML 页面一样使用 CSS 对其进行了皮肤处理。该项目上线,运行完美,所以我没有抱怨。
我发现的陷阱你可以在这里找到:
我们开发了一个大型 HR Portal 应用程序,整个表示层在 GWT 中完成。后端是Spring。一切都运行良好,用户界面非常受用户欢迎。非常重要的是,我们很容易添加新功能和维护应用程序。我认为使用 Javascript 库做一些可比较和可维护的事情要困难得多。
您确实需要某种客户端框架,否则您最终会编写一个(就像我们一样!):我们的应用程序构建在GWT Portlets(免费和开源)之上。
我们使用 HTML 片段为不同部署的应用程序设计皮肤,每个“页面”的布局都存储在 XML 文件中。
关于这个 raible 视频的一些很好的信息:http ://raibledesigns.com/rd/entry/my_drunk_on_software_interview
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),您可能会遇到一些问题。