【问题标题】:Which web application framework? [closed]哪个Web应用程序框架? [关闭]
【发布时间】:2010-03-18 04:15:51
【问题描述】:

从以下框架列表中,您会使用哪一个来开发富 Web 应用程序?为什么会选择它而不是其他框架?

芽核 GWT ExtJS GXT SmartGWT 道场/Dijit 柔性 卡布奇诺 圣杯

【问题讨论】:

  • 什么?没有电梯?电梯和GWT一起很好吃。添加一些 Google App Engine 作为意大利面的基础,然后就可以享用营养丰富的晚餐了。
  • 否决这个问题?这不是一个糟糕的问题,只是不太可能有任何明确的答案......
  • 我同意不太可能有明确的答案,但在一定程度上获得人们对这些框架的意见肯定是有用的。我会接受提供的最翔实和客观的答案。
  • 你应该去掉一个标签并添加主观,它完全是
  • 为什么在任何答案中都没有提到 SproutCore?

标签: gwt grails dojo sproutcore


【解决方案1】:

我个人厌倦了浏览器的不一致。如果其他人已经解决了这个问题,我宁愿不再这样做。这就是为什么我对卡布奇诺和 qooxdoo 等前端越来越感兴趣的原因。它们是零 HTML 零 CSS 解决方案。

【讨论】:

    【解决方案2】:

    这些是基于我使用您提到的框架的个人经验。所以是的,它有点偏颇。因此,正如其他人反复说的那样,根据人们在此处提出的建议,定义您的要求以及您认为哪一个符合您的要求。

    • GWT 太冗长了,尽管我发现许多 Java 开发人员都喜欢 GWT,因为您可以对它进行单元测试,而且它都在 Java 中。但我个人不喜欢它,因为它远非简单。有时我觉得我可以使用 Javascript 进行一些调整,但使用 GWT,我不得不使用几行 Java 代码来完成。
    • GXT 现在离 GWT 太远了,你会发现做事很困难,因为 GXT 有自己的做事方式,这与 GWT 太不同了。当出现复杂的需求时,最后你会回去做普通的 GWT。哦,他们的技术支持也不是那么好,因为我在向他们问几个问题时有过几次糟糕的经历。
    • Ext-JS 适用于简单的东西,外观和感觉真的很漂亮。但是当事情变得更复杂时,你会努力克服困难。虽然我处理过 GXT 技术支持,但我没有处理过 ExtJS 技术支持,因为他们有不同的人,即使它在一家公司,所以我不能说太多。
    • Flex 很好,真的很好。但同样适用于简单的东西。一旦事情变得更复杂,您将编写大量的动作脚本,这不太令人愉快。如果您必须用 Javascript 编写代码,有很多开箱即用的东西可能会很困难,比如多媒体支持。哦,如果你正在为一个公共网站写作,你必须考虑到没有太多用户在他们的浏览器上安装了 flash 插件。
    • Grails,我不确定您将如何使用 Grails 实现 RIA 应用程序,因为 Grails 只是另一个 MVC 框架,您需要在其之上添加自己的 RIA 框架,例如您提到的那些.

    【讨论】:

    • 您确定您已经对 GWT 进行了足够的研究以评论其简单性吗?我刚刚开始使用它,实际上我对它的干净和简单感到惊讶。
    • 现在人们使用 GWT 和 MVP 模式,这太冗长和复杂了。
    【解决方案3】:

    这完全是一个见仁见智的问题。你不会从任何人那里得到任何明确的答案,因为任何人都会有一个或另一个他们个人喜欢的答案。

    尝试每种方法足够长的时间,以确定哪一种最适合您(或您的团队)的目的。

    话虽如此,我更喜欢 GWT。其他人总是不同意我的观点。

    我喜欢 GWT 的原因:

    • 您可以共享(一些)客户端和服务器端代码(只要您的服务器是用 Java 编写的)
    • GWT 使许多高级性能特性变得非常容易(例如,延迟 JS 加载、图像精灵、CSS 混淆)
    • 专注于单页应用,为 Places 提供第三方支持(使用 gwt-presenter 库)
    • 将 GWT 添加到现有网页就像创建完整的单页 GWT 应用程序一样简单
    • UiBinder 允许您使用类似 HTML 的声明性语法编写 UI;如果你不想写类似 Swing 的 UI,你不会被困住
    • 浏览器不兼容问题(大部分)由 GWT 处理 - 您只需编写 Java 代码,GWT 将其编译为适用于每个浏览器

    可能使 GWT 不适合您的事情:

    • 如果您的服务器已经使用 Java 以外的其他语言编写,您仍然可以使用 GWT 编写 UI,但您会失去一些不错的功能
    • 使用 GWT 的编译时间是一笔不小的成本 - 开发模式可以大大缓解这一问题,但有时它仍然是个问题
    • 正如其他人所提到的,与 jQuery 或 ExtJS 等简单的 JavaScript 库相比,GWT 可以被视为“冗长”

    【讨论】:

      【解决方案4】:

      Ext GWT 在我的项目中运行良好。高级支持一直很好。

      但是该项目是供内部使用的,它允许将部署限制在一个操作系统上的一个浏览器上,并且没有努力改变 Ext GWT 的默认外观或行为。

      完全在 Java 中进行开发是一项关键优势,因为它有助于在添加功能时保持项目的可管理性。

      【讨论】:

        【解决方案5】:

        我目前正在开发一个 grail/flex 混合应用程序,该应用程序的运行效果比我预期的要好得多。我看过 GWT,但当时并没有很多关于它的书,而且它似乎强调了我不喜欢的类似 Swing 的编程技术的利用。我同意关于尝试所有这些的评论。运行他们都有的 hello 应用程序,并测量修改的难易程度。此外,工具(IDE、Maven、CI 等)支持也可以成为立即生产的重要因素。

        【讨论】:

          【解决方案6】:

          我们在这里使用 Grails+ExtJS。由于我们尝试制作一个惯用的 ExtJS 应用程序,Grails 并没有得到充分利用,尽管在服务器端使用 Grails 而不是 JSP 仍然是有意义的。

          为什么选择 ExtJS:因为它是一个非常丰富的工具包,用于类似 GUI 的 Web 应用程序。我们的工作是替换旧的 Motif GUI,所以这正是我们所需要的。

          为什么选择 Grails:因为它可以轻松快速地完成工作。对于与 ExtJS 部分的通信,我们需要大量的 JSON,而在 Grails 中是这样的:

          import foo.bar.FooBar
          class FooBarController {
              def viewFooBars = {
                  def list = FooBar.getList(session.userId, params.foo, params.bar)
          
                  def result = [resultset: list] as JSON
          
                  response.setHeader('Content-disposition', 'filename="json"')
                  response.contentType = "text/json";
                  render result
              }
          }
          

          这甚至比必要的多两三行......

          【讨论】:

            【解决方案7】:

            不幸的是,答案是固执己见,GWT 最纯粹的形式并不是吸引眼球。话虽这么说,ExtJs GXT 是超级棒的多莉。我在不断发展的框架中面临的主要问题之一是它们并非绝对没有缺陷,如果我没记错的话,GWT 2.0 出厂时缺少一些新布局的 CSS 样式。自过去 5 天以来,我一直在尝试解决 ExtJs/GXT 中的一个问题 :(,框架混淆了很多东西。我将使用任何绝对健壮并提供适当错误消息的框架。虽然我没有与其他人合作过.

            【讨论】:

              【解决方案8】:

              我推荐 Dojo。

              除了它提供的庞大基础设施之外,Dojo 1.6 还是第一个(也是唯一一个)流行的 JavaScript 库,它可以成功地与 Closure Compiler 的高级模式一起使用,并附带所有的大小、性能和混淆优势 - - 除了 Google 自己的 Closure Library 之外。

              http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

              换句话说,使用 Dojo 的程序可以 100% 被混淆——甚至是库本身。

              编译后的代码与纯文本代码具有完全相同的行为,只是它更小(平均比压缩器小 25%)、运行速度更快(尤其是在移动设备上),并且几乎不可能进行逆向工程,即使在通过美化器,因为整个代码库(包括库)都被混淆了。

              仅“缩小”的代码(例如 YUI 压缩器、Uglify)可以在通过美化器后轻松进行逆向工程。

              【讨论】:

                【解决方案9】:

                ExtJs 非常适合创建复杂的 Web 应用程序。该 API 提供了您可以在 web 应用程序中想象的任何内容,并且在一段时间后可以轻松扩展任何组件。

                您可以将其插入任何后端(我们使用 django 或 php)并在多个不同的应用程序中重用或扩展任何组件。

                您需要几个月的时间才能适应它。恕我直言。

                也就是说,对于像网站这样的简单用户界面,lib 有时有点太慢了(然后你可以使用 ExtCore)。但是对于 webapp,这不是问题。

                我不是 java 人,所以 GWT 不适合我:/

                希望对你有帮助

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-08-21
                  • 1970-01-01
                  • 2010-09-05
                  • 1970-01-01
                  • 2011-01-30
                  • 1970-01-01
                  • 2013-06-09
                  • 2010-09-20
                  相关资源
                  最近更新 更多