客户端的JavaScript框架

时间:2012-08-08 07:02:07

标签: javascript gwt dojo vaadin gxt

我的团队由更多的java人员组成,并且使用JavaScript的经验有限。我知道这个问题曾多次被问到,但为了弄清楚我的事实,我需要澄清一些事情,因为我在客户端技术方面的经验非常有限。我们决定使用GWT而不是纯JavaScript框架构建我们的解决方案(假设有更多的Java经验)。

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

  • 100%用java编写
  • 需要基本的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 个答案:

答案 0 :(得分:3)

  

GWT可以满足上述要求吗?

是(请参阅@Andrey Kapelchik的回答)。

  

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

鉴于你的背景和你提到的观点,我认为这是一个非常好的决定。我已经使用JavaScript,jQuery等构建了应用程序,但是对于任何超过1000行代码的应用程序,我都不希望再次“手动”构建JavaScript应用程序。对我来说具有决定性意义的要点:

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

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

  

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

在我正在开展的一些项目中,我们正在使用GXT,因为这个决定是在几年前做出的。这是我的观点:如果你需要构建一个看起来非常像桌面应用程序的东西,GXT可能是完美的,否则我不建议在GXT上基于应用程序。

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我的团队在经历了许多错误的开始之后真的很难解决这个问题,我们确定JavaScript无法真正避免,并且掌握并不像我担心的那样糟糕。增加GWT所需的时间与在客户端JS MVC框架上增加的时间大致相同。

我们确实考虑过GWT,但之所以放弃它,是因为从长远来看,由于以下原因而难以维持。

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

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

  1. 用于CSS /小部件框架的Twitter Bootstarp
  2. 一系列不同的jquery插件在网上形成各种各样的地方
  3. JQuery,Backbone,Handlebars用于客户端MVC框架。
  4. 如果我今天再次启动该项目,我会选择Google的AngularJS,这对构建客户端网络应用程序来说真是一种了不起的方法。特别是因为在JavaScript中巧妙地使用了依赖注入和双向绑定以及其他一些东西。我参加了JS王座会议,谷歌AngularJS的人说他们将一个17,000线GWT应用程序移植到2500线angularJS应用程序。

相关问题