客户端的JavaScript框架

JavaScript framework for client

本文关键字:框架 JavaScript 客户端      更新时间:2023-09-26

我的团队由更多的Java人员和有限的JavaScript经验组成。我知道这个问题已经被问了好几次,但为了弄清我的事实,我需要澄清几件事,因为我在客户端技术方面的经验非常有限。我们决定使用 GWT 而不是纯 JavaScript 框架来构建我们的解决方案(鉴于有更多的 Java 经验)。

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

  • 100%用Java编写
  • 需要基本的Java技能(Java SE而不是Java EE)
  • OOPHM – 进程外托管模式 – 定义您的浏览器和版本。浏览器兼容性不再是我们的问题
  • 调试 – 使用 IDE 的调试器像调试任何其他 Java 应用程序一样调试 GWT 应用程序
  • 优化的 JavaScript - GWT 编写比你更快、更紧凑的 JavaScript

但是我的一些应用程序函数需要使用外部 js 库。例如,假设我需要利用一些特定的js库在特定页面上绘制一些东西。(实际上是用 dojo 编写的 js 文件)。

  1. GWT可以满足上述要求吗?
  2. 您认为选择GWT的决定是明智的还是有任何其他建议?
  3. 我们发现 sencha gxt 拥有最好的小部件库(我知道它的商业,至少我找到了我们需要的所有小部件)。您认为在核心GWT上使用包装库是一个明智的主意吗?

提前谢谢。

GWT可以满足上述要求吗?

是的(见@Andrey卡佩尔奇克的回答)。

您认为选择GWT的决定是明智的还是有任何其他建议?

鉴于你的背景和你提到的几点,我认为这是一个非常好的决定。我已经用JavaScript,jQuery等构建了应用程序,但是对于任何超过1000行代码的应用程序,我不想再次"手动"构建JavaScript应用程序。对我来说起决定性作用的几点:

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

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

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

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

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

我想GWT非常适合您描述的项目的要求和目标。GWT 有 JavaScript 原生接口来使用原生 JavaScript。JSNI允许将GWT与现有的JavaScript或外部JS库集成。它通过允许您将JavaScript直接集成到应用程序的Java源代码中来解决这些问题。

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

我们确实考虑过GWT,但放弃了它,因为从长远来看,由于以下原因,它将更难维护。

    如果GWT
  • 的开发人员对维护它失去了兴趣怎么办,那么维护GWT之类的东西需要非常复杂的技能。
  • 我们可能想要的小部件可用于其他 GWT,并且移植到 GWT 可能比我们想要做的要多。
  • 现代JavaScript MVC框架已经变得非常成熟,具有许多非常酷的功能,这些功能使开发复杂的单页应用程序变得容易。
  • 浏览器会变得更好
  • ,JS框架会变得更好,更高的前端开发人员会更容易......等。

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

  1. 用于 CSS/widget 框架的 Twitter Bootstarp
  2. 一堆不同的jquery插件在网上的各个地方争论不
  3. JQuery,Backbone,客户端MVC框架的Handlebars。

如果我今天再次开始这个项目,我会使用谷歌的AngularJS,这确实是构建客户端Web应用程序的惊人方法。 特别是因为在JavaScript中巧妙地使用了依赖注入以及双向竞标和一堆其他东西。我参加了JS的王座会议,谷歌AngularJS的人说他们将17,000行GWT应用程序移植到2500行angularJS应用程序。