我正在考虑使用GWT启动Web应用程序,因为我使用Java比使用Javascript更舒服。此外,我想了解Web开发最佳实践以及GWT如何优化Javascript。我想分析GWT生成的javascript输出,以便我可以学习如何编写好的Javascript。是否可能或者GWT生成的javascript难以辨认,只能由浏览器理解?
编辑: 是的,我查看了* .nocache.js并且它不清晰。 虽然我现在会继续使用GWT,但我想知道是否有任何网络开发框架可以帮助我快速建立一个Web应用程序,但一路上指导我使用Javascript中的最佳实践?我更喜欢如果我的网络应用程序与此框架没有太紧密联系,如果我愿意,我可以使用javascript(+ jquery)进行编程。
答案 0 :(得分:2)
当然,你总是可以在GWT中创建一个小的“案例研究”项目,并让它用-style PRETTY
或DETAILED
进行编译,然后进行分析
但我认为这种方法仅限于微观细节,很难成功应用于整个项目。
但是,您可以从GWT学习一些很好的概念(实际上更多来自阅读GWT文档而不是分析生成的代码)并尝试为纯JavaScript项目重新实现它们:
此外,您可以尝试编写一些优秀的GWT应用程序,并找出您使用的概念。其中许多在Java中看起来很自然,而它们不在JavaScript中(这是我创建一些JavaScript原型,然后在GWT中重写它们的经验)。您可能会发现,与使用简单的JavaScript方法编写的相同代码相比,您的Java代码在增长时更容易维护。当你考虑它时,一些概念可以很好地转移到JavaScript,其中一些概念不是很多,而且对于某些东西,JavaScript有自己的(动态)概念,这在Java中不能很好地工作。无论如何,请阅读/观看Douglas Crockford对JavaScript概念的看法。
不要忘记,创建GWT的原因之一是,它应该可以在客户端使用 Java 典型架构,模式和习惯用法 - 这将是非常在JavaScript中编写代码时难以应用。
答案 1 :(得分:1)
我看到它默认压缩,几乎无法读取。也许你有选择说清楚。
我认为如果你使用gwt,你必须使用它,因为例如当新的浏览器出现时你只需要再次编译页面并且它完美地工作。
如果你想在js中写一些东西,请使用jquery。
答案 2 :(得分:1)
查看Google的Debugging and Compiling页面。您可以使用-style PRETTY参数为编译器生成可读的javascript。
更新:
GWT编译器在编译从Java到Javascript的代码时做了很多事情。 Ray Cromwell在他的Optimizing Apps with GWT Compiler演示中在Google I / O 2010中谈到了这一点。如果您对GWT Compiler优化javascript的工作感兴趣,那么这非常有用。
答案 3 :(得分:1)
通过分析GWT生成的代码来学习Javascript的方式似乎不太好。 如果你想学习Javascript,我建议你专注于Javascript,因为编译结果总是类似于模式,但是如果你做手写代码,那肯定是另一个结果。
但在我看来,使用GWT是了解“web 2.0”-world的好方法
答案 4 :(得分:1)
虽然GWT可以使用-PRETTY选项生成“可读”的javascript,但它不会真正可读。代码将难以理解,并且与使用jQuery或任何其他JavaScript库的方式相比,它的结构将完全不同。在java世界之外几乎不可能进行测试和调试。
另一方面,您可以使用JSNI从GWT访问普通Javascript,反之亦然使用gwt-exporter。
答案 5 :(得分:1)
您可能会发现这与尝试从已编译的C程序的输出中学习汇编程序一样困难。你的孩子还记得C吗?汇编? Anyhoo,我建议你创建一个简单的GWT程序,相当于一个“Hello world”类的东西,并使用这里给出的建议来获得漂亮的未经模糊处理的输出。如果你能理解你所看到的Javascript,并且它与人类可能直接使用Javascript完成相同任务所写的内容有相似之处,那么这可能会有效。另一方面,如果出现的是大量模糊的初始化和设置,以及严重依赖外部Javascript函数来执行最简单的操作,那么可能以老式的方式学习Javascript将是更好的方法
答案 6 :(得分:1)
您可以从您的gwt导出javascript api,这样您就可以使用原始js或jquery与您的gwt代码互操作。
http://code.google.com/p/gwt-exporter/
这将允许您发出一个跨平台的gwt库,它将您编译的api呈现给原始javascript。对于将您的gwt工作导出到原始js项目非常有用。
这也是一个教你强大的java和javascript的好项目;它使用注释和自定义生成器来导出java方法和字段。