Google Web Toolkit对开发复杂的javascripts有用吗?

时间:2009-01-06 15:39:07

标签: java javascript gwt

我非常喜欢javascript框架,特别是jQuery。我一直想设计像“plurk.com”这样的网站,但我知道它需要非常庞大的javascript.so关闭了我。但是因为我知道了GWT,我真的想测试它,并想问你是否让我们的工作比使用javascript或它的框架更容易开发复杂的东西。你更喜欢哪一个?

6 个答案:

答案 0 :(得分:22)

我认为这个问题的一些答案是非常不明智的,我怀疑回答他们的人从未在大型项目中使用过GWT。是的GWT是一个很好的方式来做大型AJAX网站,对于大型复杂网站,也包括后端,它在公园上下踢JQuery之类的东西。我一直看待它的方式是它自己的javascript非常适合做小客户端的事情。当你需要做一些更复杂的事情(比如动态字段,弹出窗口,动画)时,你会带来像JQuery或Prototype这样的东西。当你想更进一步时,你可以选择GWT。

人们认为,因为您使用Java编写它,它是专为后端开发人员进行前端开发而设计的。不是。 Java只是他们选择的语言,主要是因为它被广泛使用,静态类型,并且有很多优秀的编辑器。

我也不会购买漏洞抽象理论,它不会尝试完全抽象出HTML元素,因为如果你选择使用它,你可以直接访问本机javascript和DOM。

简而言之,我们在GWT中构建了非常复杂的站点(其中一个在GWT博客上有特色),并且还使用了其他库,如JQuery。我完全可以告诉你,一旦你了解了GWT,它就会杀死那些因复杂任务而死的其他框架。它还有一些很棒的内置功能,有助于使事情变得更好,甚至可以做一些其他框架不支持的东西(比如它可以用图像做的魔术)。有关更多详细信息,请参阅此博客文章:

http://googlewebtoolkit.blogspot.com/2007/10/epo-builder-built-with-gwt.html

答案 1 :(得分:7)

很少有事情像“生成的Javascript”一样吓唬我。在这些情况下,The Law of Leaky Abstractions必须是双重的。

编写有效的跨浏览器javascript是一个持续改进的棘手过程。试图破译一些生成的,模糊的Javascript出错的地方是一个令人头疼的问题。修复纯JS库中的错误已经够糟糕了。

对我来说,GWT是一个旨在允许后端开发人员编写前端浏览器代码的技巧。不幸的是,现代网络应用程序的现实意味着你只需要知道Javascript和DOM。有些东西会破裂,你需要知道原因。

我认为你最好选择一个像jquery或者原型这样的好的javascript库,并且学得很好。这些库抽象出那些应该被抽象掉的东西,并且不太可能在边缘情况下破解,比如数组操作和AJAX请求。

答案 2 :(得分:4)

是的,确实如此,因为你将使用Java而不是Javascript。

精湛的IDE,静态代码分析,搜索和重构 - 所有这些都将使您在大型项目中的生活更轻松。

答案 3 :(得分:3)

没有。它没有。

它不会消除复杂性,只是让您可以从Java Perspective处理它。因为它为您提供了Java提供的所有工具......仅此一点就可以使它变得有价值。

JavaScript IDE越来越好了,通常如果你使用像jQuery或Prototype这样的框架,那么你可能会发现它比处理像GWT这样的重量级抽象层更容易。

我个人的偏好是采用纯粹的JavaScript方法,但那是因为我喜欢能够更接近金属工作,而且我有足够的纪律来驯服我的JavaScript猫。

答案 4 :(得分:2)

使用GWT,你实际上并没有编写JavaScript;它的全部价值主张是你可以编写Java,它将为你编译成JavaScript。

答案 5 :(得分:2)

我正在开发一个使用GWT效果非常好的项目。这对我们来说是一个不错的选择,因为我们都是主要从事内部工具的Java开发人员。我不能说它对大型最终用户网站有多大用处。

我特别欣赏的一个优点是无缝对象序列化和反序列化。 XML-RPC的细节不仅被抽象出来,而且由于相同的Java代码被编译为服务器的字节代码和浏览器的javascript,因此您可以编写代码,就好像服务器和客户端在单独的类加载器中运行一样相同的JVM。例如,您可以在服务器上构造Java对象,将其作为RPC服务调用的返回值发送到浏览器,然后浏览器代码可以使用相同的Java类来操作刚刚返回的对象。同样,RPC调用的参数可以构造为Java对象,服务器在另一端接收相同的Java对象。所有这些都没有弄清楚(反)序列化的细节。