【问题标题】:Best GWT widget library? [closed]最好的 GWT 小部件库? [关闭]
【发布时间】:2017-01-03 07:20:29
【问题描述】:

所有 GWT 专家的问题 - 哪个是最好的 GWT 小部件库?为什么?

根据答案列出:

И наконец- новое поколение основанное на JsInterop:

【问题讨论】:

  • 您是否忘记在列表中包含 gwt-mosaic?
  • 这个问题没有具体针对要求,因此可以预见的是,即使不满足所有要求,最显眼的(核心 GWT)也会被投票赞成。如果您有一个具有许多屏幕和大量数据的复杂企业应用程序,并且您需要强大的网格和编辑器,那么这就是 SmartGWT 的用途。普通 GWT 非常适合许多应用程序,但许多具有这组特定要求的企业评估 GWT 并认为 SmartGWT 更适合。要获得概览并自行决定,请阅读快速入门指南。 smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf
  • 你缺少 gwt-bootstrap
  • 我已经创建了一个网站提案,以便为此类问题提供远离 Stack Overflow 的官方主页。它被称为Code Recommendations 现在加入并提出问题,帮助实现它!
  • 这看起来也很有希望:gwt-material-demo.herokuapp.com

标签: java gwt


【解决方案1】:

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

之后,您可以使用这些库的任何小部件(例如表格、组合框、日期选择器等)并将其合并到您的项目中。仅当您看不到使用 vanilla GWT 的方法时,才尝试使用扩展组件。这样一来,您就不会将自己束缚在这些库中,当您尝试做一些没有出现在演示应用程序中、包含许多错误并且它们的支持充其量很差的事情时,这些库总是很痛苦。

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

小心其他库,我曾与他们合作过(但仍然做噩梦)。

【讨论】:

  • 您想分享其他图书馆的具体经验吗?
  • GXT,我不会把它推荐给我最大的敌人。如果你考虑它,请先谷歌它,并确保你知道你要进入的地方。 SmartGWT,一个 JS 包装器,非常丑陋。远离它。我在实际项目中都有这两个方面的经验。首先我使用了 SmartGWT,但它的局限性让我转向了 GXT。我很快就发现了他们在表单绑定和 java 泛型方面的混乱(天哪,每次我记得......)我不知道哪个更糟!我完成了,是的,但我遭受了巨大的痛苦。之后我学会了使用 vanilla GWT,并且只使用了我喜欢的其他库中的小部件。
  • 这篇文章已经过时,本质上会过时,但我在过去 2 年中广泛使用 GXT,虽然它存在问题,但它也允许相对轻松地创建非常漂亮的应用程序.它有非常有用的网格、缓冲网格和实时网格。 SmartGWT 还具有功能完善的网格和组件。也可以考虑Vaadin
【解决方案2】:

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

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

那么,我为什么会做出这个选择?似乎太多的图书馆都有自己的图书馆,因为没有更好的词,行李。要么你必须全身心投入到一些 MVC 框架中(它可能与你的代码库的其余部分不完全兼容),要么你必须采用某人的新奇的布局系统,或者你必须接受这样一个事实:你不能真正调试代码(因为它只是 JSNI 包装器)。

不要误会我的意思,GWT 孵化器并不完美……那里的小部件在不断变化。不过,就我而言,这是最好的选择。它给了我很好的(但绝对不是完美的):

  • API
  • 可扩展性
  • 外观和感觉(嗯,这有点弱,但这就是 CSS 的用途。)

所以...答案(对我而言)是以下几点的组合:

  • 库存 GWT 小部件(带有 很多 种自定义样式)
  • GWT 培养箱表
  • 一些自制的小部件

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

【讨论】:

  • 由于依赖于某些外部 AJAX 库,大多数小部件库都需要一些许可证。这也为您的解决方案增加了额外的尺寸。另请注意,大多数小部件库都依赖于一个或多个额外的外部组件。
【解决方案3】:

查看这个组件库GWT Bootstrap这是 Twitter Bootstrap 的 gwt 中的一个实现。

【讨论】:

【解决方案4】:

GWT 本身就是一个很好的库。

我没有使用所有提到的,但可以推荐Ext GWT

【讨论】:

  • 我同意裸 GWT。除了孵化器项目(code.google.com/p/google-web-toolkit-incubator),您基本上可以实现任何东西。我使用了 MyGwt,但是当他们关闭项目并更改其名称以及所有论坛和支持、许可证时,它很糟糕
【解决方案5】:

我更喜欢香草 GWT。 其他一些 API 看起来很漂亮,它们的展示确实展示了小部件,但我总是发现性能并不是最好的……当我说性能时,我的意思更像是响应时间。我讨厌应用程序感觉迟缓。

【讨论】:

    【解决方案6】:

    提到的大多数库都不是开源的,更糟糕​​的是:它们只是 JavaScript 库之上的包装器。 GWT 的强大之处在于应用程序可以在不同的浏览器上运行(因为专门为“大”浏览器生成代码)。这些 JavaScript 底层库会导致很多问题。

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

    【讨论】:

    • 非常具有误导性。除了 ExtGWT (GPL) 之外,几乎所有列出的库都是具有商业友好许可证(Apache、BSD、LGPL)的开源库。此外,即使在目前提供的非常有限的组件集中,GWT 也有许多跨浏览器的错误——只需搜索他们的错误数据库即可验证这一点。 GWT 编译器并不神奇,它不会自动纠正奇怪的、特定于情况的浏览器布局错误等——它们需要像任何其他框架一样解决它们。他们也不总是处于最前沿 - 他们还没有宣布正式的 iPhone 或 Android 支持,SmartGWT 已经宣布了。
    【解决方案7】:

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

    优点:

    • 相对容易设置和使用
    • 它背后的规模不错的社区
    • 网上很多例子,都有代码
    • 精选的小部件,涵盖广泛的功能

    缺点:

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

    【讨论】:

      【解决方案8】:

      不要使用它们中的任何一个!如果你打算开发一个大规模的应用程序,你应该考虑使用 MVP 模式。最好的实现是MVP4G 框架,它支持开箱即用的 GWT 代码拆分。有很多很好的例子,你可以开始。最有价值的是 Mvp4GModules。

      【讨论】:

        【解决方案9】:

        添加新的:GWT-Bootstrap :)

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

        【讨论】:

        • GWT-Bootstrap 有潜力成为最好的。
        • 除了标签和模式等领域的非常基本的设计监督。他们需要减少对 JQuery 的依赖,更多地思考“应用程序”。
        • 补丁非常受欢迎。无论如何感谢您的建议
        【解决方案10】:

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

        第 3 方库通常会意外破坏您的计划。而且很难找到并解决问题的根源。

        所以我建议使用纯 GWT。

        【讨论】:

          【解决方案11】:

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

          【讨论】:

            【解决方案12】:

            对我来说 EXT-GWT(又名 GXT)是目前可用的最好的库,我在 6 个月的项目中使用它,它对许多预定义的组件(如网格、树...)有很大帮助。 也很漂亮

            【讨论】:

            • 你一定是在开玩笑!我已经每天使用 GXT 18 个月了,老实说,这是一场噩梦。
            【解决方案13】:

            SmartGWT 是一个很好的库,它有很多示例,但用户界面不是那么时尚。对于用户界面Ext GWT 很好。

            【讨论】:

              【解决方案14】:

              gwt-mosaic 的用户组似乎不是很活跃,除了 wiki sn-ps 之外我找不到用户手册。 gwt-mosaic 向我介绍了两个有趣的工具。

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

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

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

              听说 ext-gwt 很慢,而且 JS 文件很大。

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

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

              【讨论】:

              • 除非您忽略文档中的安装说明,否则大型 .jar 文件不会出现 SmartGWT GAE 问题,事实上,SmartGWT Pro 包含一个在 GAE 上运行并提供完整 CRUD 的示例项目,使用 JPA 进行持久性。此外,便宜是相对的——当考虑到开发人员、质量保证、硬件/托管等成本时,为 SmartGWT 提供的最昂贵的许可和支持选项仍然是交付整个应用程序/产品成本的可忽略不计的一部分。如果您的预算有限,可以使用免费 (LGPL) 版本。
              【解决方案15】:

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

              RPC 是另一个薄弱而复杂的领域。文档和论坛中有相互矛盾的信息。虽然文档会说您应该很少使用自定义操作作为 ds 的一部分,但他们的论坛会告诉您这完全没问题。在最好的日子里学习有效地使用这些工具是一次艰难的攀登。

              他们会超卖产品。例如,charting/analytics 包包含图表...但这些图表不会显示负值或让您以任何有意义的方式操纵轴标签。他们在论坛上以“是啊,那又怎样”的态度公开回应有关此问题的查询。 “我们不打算将其添加到 3.0 倍,尽管这是我们的卖点之一,它在我们的路线图上。”当他们卖给我包裹时,他们从未提到我不能显示负值。真的吗?什么图表不需要能够显示负值?我只能想到一个——描述不满意的同构客户数量的那个。

              远离这些家伙,去任何竞争对手的网站,例如 ExtJS、JQuery、甚至是 quxdoo。有一些项目确实取得了进展,并且实际上提供了一个很好的解决方案。

              如果您评估此产品,请务必谨慎。它看起来不错,但是在使用它的项目大约两周后,你就会开始明白我的意思了。小部件是半生不熟的,数据源非常复杂,仅仅因为您支付了论坛支持费用,并不意味着您实际上会得到除嘲讽之外的任何东西,居高临下的答案一开始会让您认为您错过了一些东西。你不是吗?他们通常很傲慢。

              祝你好运,如果您重视开发时间和可维护性,请远离此产品。哦,还有最后一件事。查看他们网站上的 MVC 示例。除了标签上写着“MVC”之外,它实际上与 MVC 无关。他们会试图让你相信这样的框架是为没有经验的开发人员准备的,而且这样的概念在实际编程中没有立足之地……有点像那些 try catch 块。

              【讨论】:

              • 全都是假的,因为您可以轻松验证。这是 MVC 示例 (smartclient.com/smartgwt/showcase/#featured_smartgwt_mvc),这个用户基本上不明白 - 阅读说明,您会看到展示的巨大功能。我什至无法猜测必须“获取和检查”是什么意思,但很可能用户没有阅读快速入门指南并且错误地使用了系统。只需自己阅读 (smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf),架构清晰且不言自明。此外,我们的图表确实绘制了负值。
              • 老实说。当前稳定的 3.0 版本不支持负数,用他们自己的话来说,他们拒绝支持它:forums.smartclient.com/showthread.php?t=21219
              • ??该线程指示客户使用 dot release (3.1)。它是免费的,不是升级的,而且非常稳定。你试图让这听起来像是在试图超卖或榨取更多钱,这不仅是错误的,而且与事实相去甚远:看看人们在 3.1 中免费获得的所有主要新功能(blog.isomorphic.com/… )。你显然是在故意误导,这让你的其他 cmets 大开眼界。
              • 我当然无意误导。然而,作为回应,我会说突出产品的所有强大功能是一种误导,在这种情况下是分析包,但不知何故忽略了它实际上并没有(3.1 之前)绘制负数。此外,只要 3.0 版本中没有自定义 CSS 实现,升级到 3“点”版本就可以了,这凸显了使用 SmartGWT 很痛苦的另一点......
              【解决方案16】:

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

              Ext GWT 添加了花里胡哨的功能,但除此之外它与 Google 的相似。

              【讨论】:

                【解决方案17】:

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

                【讨论】:

                  【解决方案18】:

                  我会说,如果您只需要几个小部件,那就自己构建。您可以从提到的库中复制粘贴一些概念。但他们都缺少一件事或另一件事。 我已经和他们中的大多数人一起玩过,并且放弃了每一个。

                  【讨论】:

                    【解决方案19】:

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

                    【讨论】:

                      【解决方案20】:

                      没有看到提到过这个,Vaadin(以前称为 IT Mill Toolkit),但可能是因为它在技术上并不完全是 GWT;正如他们的FAQ 所说:

                      这与 GWT 有何不同?

                      GWT 应用程序在浏览器中运行, 而 Vaadin 应用程序在 服务器。我们确实使用 GWT 作为 浏览器上的“渲染引擎” 侧,所以​​你可以结合 Vaadin 和 GWT。

                      【讨论】:

                        【解决方案21】:

                        smartGWT 速度很慢,并且缺乏示例,即使是基本问题也很难找到答案,即在这个论坛上查看我所有未回答的问题。 我正在抛弃 smartgwt。

                        【讨论】:

                        • SmartGWT 绝对是一项正在进行的工作,但它正在变得更好。在我报告它们的几天内,我曾两次让开发人员修复了主干中的错误,这令人鼓舞。它是一个庞大而沉重的 API,但您必须问问自己它是否与您正在编写的应用程序相匹配。
                        • SmartGWT 的样本比这里讨论的任何库都多。这是可以客观验证的:(smartclient.com/smartgwt/showcase/#main) 我们还有一个非常强大的快速入门指南 (smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf)。请务必查看该用户提出的问题 - 一个无效,一个我回答了。
                        【解决方案22】:

                        two EXTs 的优缺点比较。

                        【讨论】:

                          【解决方案23】:

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

                          来自网站:

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

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

                          【讨论】:

                            【解决方案24】:

                            我使用 GWT 一年了。经过大量研究,我决定将 GWT Mosaic 作为一个小部件库.. Mosaic 使用了一些 GWT 孵化器组件,例如 PagingScrollTable.. 但是组合框和表格的功能对我们来说还不够.. 这就是为什么,我们有扩展这些组件以添加所需的功能。

                            【讨论】:

                              【解决方案25】:

                              查看 SpiffyUI:www.spiffyui.org

                              它不仅仅是一个小部件库,而是复杂的 UI/UX GWT 框架。

                              【讨论】:

                                【解决方案26】:

                                单元测试和调试是两件重要的事情——也是大多数库遗漏的事情。这就是 GWT 大放异彩的地方。如果您使用基于 vanilla js 的库,您将放弃对项目进行单元测试和调试的能力。作为 GWT 开发人员,您应该考虑这些要点并使用没有或最小 js 依赖的库。

                                【讨论】:

                                  【解决方案27】:

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

                                  【讨论】:

                                    猜你喜欢
                                    • 2011-01-19
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2010-10-25
                                    相关资源
                                    最近更新 更多