最好的GWT小部件库?[关闭]


134

对所有GWT专家的问题-那里是最好的GWT小部件库?又为什么呢

根据答案列出:

JsInterop的排名


您是否忘记在列表中包括gwt-mosaic?
Ashwin Prabhu 2010年

2
这个问题不是针对需求的特定问题,因此可以预见,即使不满足所有需求,最明显的(核心GWT)也被投票通过。如果您有一个具有许多屏幕和大量数据的复杂企业应用程序,并且需要功能强大的网格和编辑器,那么SmartGWT就是这么做的。普通GWT非常适合许多应用程序,但是许多具有这组特定要求的企业评估了GWT并认为SmartGWT更合适。要获得概述并自己决定,请阅读《快速入门指南》。 smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf
Charles Kendrick

您缺少gwt-bootstrap
caarlos0 2012年

我创建了一个站点建议,以向像这样的问题提供一个远离Stack Overflow的正式家。它被称为“代码建议帮助”,现在就加入并提出问题,可以使它成为现实!
daviewales 2014年

这看起来也很有希望:gwt-material-demo.herokuapp.com
kozla13

Answers:


52

不要将自己绑定到这些库中的任何一个。使用Vanilla GWT创建项目的结构。特别是,请使用MVP模式和事件总线。请参阅Google文章,以了解如何最佳地使用GWT设计客户端应用程序:构建MVP应用程序

之后,您可以使用这些库中的任何窗口小部件(例如表,组合框,日期选择器等)并将其合并到您的项目中。仅当看不到使用香草GWT的方法时,才尝试使用扩展组件。这样,您就不会将自己束缚在这些库上,而当您尝试执行演示应用程序中未出现的,包含许多错误且对它们的支持最多时,这总是很痛苦的。

如何查找小部件应遵循以下顺序:

与其他图书馆一起时,我与他们合作过(并且仍然做噩梦)。


1
您想与其他图书馆分享任何特定经验吗?
亚当

6
GXT,我不会推荐给我最大的敌人。如果您考虑使用它,请首先对其进行Google搜索,并确保您知道要进入的地方。SmartGWT,一个JS包装器,非常难看。远离它。我在一个实际项目中都有这方面的经验。首先,我使用SmartGWT,但是它的局限性使我转向了GXT。我很快发现了表单绑定和java泛型所带来的混乱(耶稣,每次我记得.....),我不知道哪一个更糟!我完成了,是的,但是我遭受了极大的痛苦。之后,我学习了使用Vanilla GWT以及其他库中只有我喜欢的小部件。
2011年

这篇文章很老,并且本质上会有所发展,但是在过去的两年中,我已经广泛使用了GXT,尽管它有问题,但它也允许相对轻松地创建外观很好的应用程序。它具有非常有用的网格,缓冲网格和实时网格。SmartGWT还具有功能强大的网格和组件。还要考虑Vaadin
卡尔·普里切特

43

取决于您所说的“最佳”。最好看的?最好的API?最适合扩展自己的自定义需求?

例如,我只是评估要在我们的应用程序中使用的表类。我们一直在使用GWT-Ext,但是它给我们带来了许多性能问题,并且很难以我们需要的方式调整表的大小。我非常接近GWT-Mosaic,但决定改用GWT孵化器中的小部件。

那么,为什么要做出这个选择呢?似乎有太多的图书馆都附带了它们自己的图书馆,因为缺少更好的说法,那就是行李。您要么全力投入某些MVC框架(可能与其余代码库不完全兼容),要么必须采用某人的新的有序布局系统,或者必须忍受一个事实:真正调试代码(因为它只是JSNI包装器)。

别误会我的意思,GWT孵化器并不完美……小部件的流通量很大。就我而言,这是最佳选择。它给了我很好(但绝对不是完美的):

  • API
  • 可扩展性
  • 外观(感觉,这有点薄弱,但这就是CSS的目的。)

所以...(对我来说)答案是以下各项的组合:

  • 库存的GWT小部件(具有很多自定义样式)
  • GWT保温箱表
  • 一些自制的小部件

(我应该补充:我指的“行李” 不一定是一件坏事。但是,如果您只想要一个或两个小部件,则可以提高完成工作以及如何完成工作所需的标准。良好的应用程序外观。)


由于依赖于某些外部AJAX库,大多数窗口小部件库都需要一些许可证。同样,这也增加了解决方案的尺寸。还要注意,大多数窗口小部件库都依赖于一个或多个其他外部组件。
IgorM


10

仅GWT就是一个很好的库。

我没有使用所有提及的内容,但是可以推荐Ext GWT


2
我同意裸露的GWT。除了孵化器项目(code.google.com/p/google-web-toolkit-incubator),您基本上可以实现任何东西。我使用MyGwt,但是当他们关闭该项目并更改其名称并且所有论坛和支持,许可证均被更改时,它很烂
Robert Childan 2009年

1
那一定很可怕。这不是维护软件的非常实用的方法。
DragonBorn

9

我更喜欢香草GWT。其他一些API看起来很漂亮,并且它们的展示确实展示了这些小部件,但是我总是发现性能不是最好的。我讨厌应用程序呆滞。


8

提到的大多数库都不是开源的,甚至更糟:仅仅是JavaScript库顶部的包装器。GWT的强大功能在于该应用程序可在不同的浏览器上运行(因为专门为“大型”浏览器生成了代码)。这些JavaScript基础库可能会导致很多问题。

我同意jgindin GWT孵化器和GWT Mosaic是迄今为止最好的。


非常误导。除ExtGWT(GPL)以外,几乎所有列出的库都是具有商业友好许可证的开放源代码(Apache,BSD,LGPL)。此外,即使在当前提供的组件非常有限的情况下,GWT仍然存在许多跨浏览器的错误-只需搜索其错误数据库以进行验证。GWT编译器不是魔术师,它不会自动纠正因情况而异的奇怪的浏览器布局错误等-它们需要像其他任何框架一样解决它们。它们也不总是处于最前沿-SmartGWT尚未宣布官方的iPhone或Android支持。
查尔斯·肯德里克

7

并不是说它是“最好的”,但是最近我一直在使用GWT-Ext。它有一些优点和缺点:

优点:

  • 相对容易设置和使用
  • 背后有体面的社区
  • 大量在线示例,所有示例均附带代码
  • 精选的小部件涵盖了广泛的功能

缺点:

  • 对您可能无法容纳的数据格式和结构做出假设
  • 库只是一个JSNI包装器,这使得调试和扩展变得更加困难
  • 图书馆未来的支持和发展尚不确定
  • 仍然存在一些恼人的跨浏览器问题(尤其是布局)
  • 他们的论坛上的搜索功能实际上是没有用的。(这正成为我的大宠儿> _ <)

6

请勿使用其中任何一个!如果计划开发大型应用程序,则应考虑使用MVP模式。最好的实现是MVP4G框架,它支持开箱即用的GWT代码。首先,有很多很棒的例子。最有价值的是Mvp4GModules。


5

添加一个新的:GWT-Bootstrap :)

目前没有稳定的版本,但很快就会发布。


1
GWT-Bootstrap有潜力成为最好的。
Mike

除了制表符和模态之类的非常基本的设计监督之外。他们需要减少对JQuery的依赖,并考虑更多的“应用程序”。
Καrτhικ

补丁非常受欢迎。无论如何,谢谢您的建议
caarlos0 2013年

4

我的经验表明,第三方库始终存在许多问题。最好的方法-使用本身知名的和精湛的技术以及您自己的组件。编写和维护它们可能需要更长的时间,但是TCO始终处于较低水平。

第三方图书馆经常会意外地破坏您的计划。而且很难找到并解决问题的根源。

因此,我建议使用普通的GWT。


3

我认为SmartGWT很好,如果您只想按原样使用这些小部件,但是如果您想像我在Gxt Scheduler中那样扩展或修改这些小部件,我认为Ext-GWT是一个更好的选择。


3

对我而言,EXT-GWT(又名GXT)是当前可用的最佳库,我在6个月的项目中使用了它,它对许多预定义的组件(例如网格,树...)也有很大帮助。


3
你一定在开玩笑!我每天已经使用GXT 18个月了,可以说是一场噩梦。
Alex Worden


2

gwt-mosaic的用户组似乎不太活跃,除Wiki片段外,我找不到用户手册。gwt-mosaic向我介​​绍了两个有趣的工具。

1)gwt-mosaic包含Tibco的PageBus的包装程序,该包装程序是针对应用程序的JS部分(RPC处理程序,小部件回调,小部件设置程序)的发布/订阅工具。这是gwt事件总线的替代方法。

2)gwt-mosaic鼓励使用Beans Binding(http://code.google.com/p/gwt-beans-binding/)将数据绑定到小部件并验证小部件。

完整的功能集和支持对smartgwt来说并不便宜。除非您删除不使用的主题文件,否则该罐子对于appengine来说太大了。他们也在服务器端投资工程。

我听说ext-gwt速度慢并且JS文件很大。

gwt小部件孵化器看起来已弃用。我相信豪华网格将随新的gwt一起发布。

外观,绑定和验证标准的缺乏阻碍了小部件库的互操作性。


除非您忽略文档中的安装说明,否则大.jar文件不会出现SmartGWT GAE问题,实际上,SmartGWT Pro包含一个在GAE上运行并提供完整CRUD的示例项目,使用JPA进行持久化。同样,便宜是相对的-考虑到开发人员,质量保证,硬件/托管等方面的成本,为SmartGWT提供的最昂贵的许可和支持选项仍然是交付整个应用程序/产品的成本的很小一部分。如果您预算有限,则有免费(LGPL)版本。
查尔斯·肯德里克

2

绝对不是SmartGWT。他们的框架是肿的,具有半生不熟的性质。它们有上百万个小部件,但是要使它们适用于您的项目并不容易。数据源使管理数据的过程变得非常复杂,例如,为了获取数据源中的数据,您必须经常使用fecth并进行检查。虽然可以缓存结果,但查询它们并不总是那么容易。

RPC是另一个薄弱且令人困惑的领域。文档和论坛中存在矛盾的信息。尽管文档会说您几乎不应该将自定义操作作为ds的一部分使用,但他们的论坛会告诉您,这很好。学习有效使用这些工具是最好的日子。

他们将超额销售产品。例如,图表/分析程序包包含图形...但是这些图形不会显示负值,也不会让您以任何有意义的方式操作轴标签。他们以“是的,是什么”的态度在论坛上公开回答有关此问题的问题。“尽管这是我们的卖点之一,但我们并不打算将其增加到3.0倍,这是我们的路线图。” 当他们卖给我包装时,他们从没提到我不能显示负值。真?哪些图不需要显示负值?我只能想到一个-描述不满意的同构客户的数量。

远离这些家伙,然后转到任何竞争对手的网站,例如ExtJS,JQuery,甚至是quxdoo。那里有一些真正取得进展并提供良好解决方案的项目。

如果您曾经评估过该产品,请格外小心。看起来不错,但是使用它进行项目的大约两个星期,您就会开始明白我的意思。小部件半生半熟,数据源极其复杂,仅因为您为论坛支持付费,并不意味着您实际上会得到除snide之外的任何东西,屈尊的答案起初会让您觉得自己错过了一些东西。您不是他们通常很傲慢。

祝您好运,如果您重视开发时间和可维护性,请远离本产品。哦,还有最后一件事。在他们的网站上查看MVC示例。实际上,它与MVC无关,只是标签显示为“ MVC”。他们将试图说服您这种框架是针对没有经验的开发人员的,并且这种概念在实际编程中没有地位。


所有这些都是错误的,您可以轻松地进行验证。这是该用户基本不了解的MVC示例(smartclient.com/smartgwt/showcase/#featured_smartgwt_mvc)-阅读说明,您将看到所展示的强大功能。我什至无法猜测必须进行“获取和检查”的意思,但是很可能用户没有阅读《快速入门指南》并且错误地使用了系统。只需自己阅读(smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf),该体系结构便会清晰易懂。此外,我们的图表会标出负值。
Charles Kendrick 2012年

在这里说实话。当前的3.0稳定版本不支持负数,以他们自己的话说,他们拒绝支持它: forums.smartclient.com/showthread.php?t=21219
binarygiant 2012年


?? 该线程指示客户使用点发布(3.1)。它是免费的,而不是升级,并且非常稳定。您试图使这种声音听起来像是试图超售或提取更多的钱,这不仅是错误的,而且与事实相去甚远:只需看看人们在3.1中免费获得的所有主要新功能(blog.isomorphic .com /…)。显然,您故意被误导,这为您的其他评论提供了启示。
查尔斯·肯德里克

我当然不是要误导。但是,作为回应,我想说的是误导产品的所有重要功能,在本例中是分析包,但以某种方式忽略了它(实际上不是3.1之前)绘制的是负数。此外,只要在3.0版本中没有自定义CSS实施,升级到3个“点”版本就可以了,这突出了使用SmartGWT的另一点痛苦……
binarygiant 2012年

1

Google的默认库是功能最强大的库。

Ext GWT添加了花哨的功能,但除此之外,它类似于Google的功能。


1

我们目前喜欢GWT Mosaic小部件。我们已经使用了ext-JS,并且过去已经推出了自己的小部件。ext-JS许可和批量交易对我们来说是个问题。自己滚动不是我们想要做的。Mosaic为我们提供了一个快乐的中间立场,我们希望随着项目的成熟,这将是一个更加快乐的中间立场。


1

我想说的是,如果您只需要几个小部件,则可以构建自己的小部件。您可以从提到的库中复制粘贴一些概念。但是他们都缺少一件事。我和大多数人一起玩,却放弃了每个人。


1

需要注意的一件事是,在论坛上,GWT-Ext看起来将不再进行过多的开发/维护(也许根本不会?)。他们建议在其网站上迁移到SmartGWT


1

Vaadin(以前称为IT Mill Toolkit)没有看到这一点,但这也许是因为它在技术上并不完全是GWT。如他们的常见问题解答所述

这与GWT有何不同?

GWT应用程序在浏览器中运行,而Vaadin应用程序在服务器上运行。实际上,我们确实在浏览器端使用GWT作为“渲染引擎”,因此您可以将Vaadin和GWT结合使用。


1

smartGWT运行缓慢且缺少示例,即使是基本问题也很难找到答案,即在此论坛上查看我所有未回答的问题。我正在倾销smartgwt。


SmartGWT肯定是一项正在进行的工作,但它正在变得越来越好。在我报告它们的几天之内,有两次我让开发人员修复了主干中的错误,这令人鼓舞。尽管这是一个庞大,沉重的API,但是您必须问自己是否与您正在编写的应用程序匹配。
AndrewR 2010年

SmartGWT的示例数量超过此处讨论的任何库。这是可以客观验证的:(smartclient.com/smartgwt/showcase/#main)我们也有非常强大的快速入门指南(smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf)。请查看该用户提出的问题-一个无效,我回答了一个。
查尔斯·肯德里克


0

我们使用GWT Portlet构建了一个大型的HR门户和一些较小的应用程序。该项目的重点不是在构建小部件的集合上,而是在创建一个简单的编程模型。

从网站:

GWT Portlet是一个免费的开源Web框架,用于构建GWT(Google Web工具包)应用程序。它定义了一个非常简单且高效的功能强大的编程模型,以构建美观的模块化GWT应用程序。

编程模型有点类似于为门户服务器(Liferay,JBoss Portal等)编写JSR168 portlet。“门户”是使用GWT Portlets框架作为库构建的应用程序。应用程序功能被开发为与每个可选的服务器端DataProvider松散耦合的Portlet。


0

我正在使用GWT一年。经过大量研究,我决定将GWT Mosaic用作小部件库。.Mosaic使用了一些GWT孵化器组件,例如PagingScrollTable。扩展了这些组件以添加所需的功能。



0

单元测试和调试是两件重要的事情,也是大多数库所缺少的东西。这就是GWT大放异彩的地方。如果您使用基于Vanilla js的库,则可以放弃对项目进行单元测试和调试的功能。作为GWT开发人员,您应该考虑这些要点,并使用没有js依赖关系或最小js依赖关系的库。


0

我们从事gwt项目已有两年多了,我们坚持使用默认的小部件。我们制作了自己的开源库来自动填充默认库或我们自己的小部件扩展。请检查它,它叫做gwt-jet。自从我们在大型生产环境中使用它以来,它已经过很好的测试,我们希望它能随着时间的推移安全地增长。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.