【问题标题】:Flex vs ExtJS for internal system front end, what are their strengths and weaknesses?Flex vs ExtJS 用于内部系统前端,它们的优缺点是什么?
【发布时间】:2010-06-19 00:30:50
【问题描述】:

回顾一下我刚刚构建的内部系统,常见的服务器/页面模型,在一些 UI 组件中少量使用了 Ajax。我不确定我是否对最终结果感到满意,因为我们似乎在前端花费了太多时间。不喜欢在样式设置和确保 CSS 正常工作方面遇到所有麻烦。

所以我开始思考,前端有没有更好的工具?

Flex 和 ExtJS 如何比较?也许在这些地区?

  • 学习曲线
  • 功能
  • 布局(不维护 CSS)
  • 易于实施
  • 可测试性(Javascript 与 Actionscript 中的 TDD?)
  • 性能
  • 可维护性

请不要关闭此链接,我只是向在 Flex、ExtJS 或两者都有经验的人寻求反馈。

谢谢大家!

【问题讨论】:

    标签: javascript apache-flex actionscript air extjs


    【解决方案1】:

    我将从我的执行摘要开始:

    如果我现在必须选择,我会选择 Flex。数据绑定和服务器通信设置起来非常简单、直观且快速。您会发现,如果您正在做大量的布局和 MVC 样式框架的视图,那么 Flex 可能会让您更快地进行设置,并且会更容易阅读。

    比较标记

    Flex 非常关注 MXML,这是一种标记语言。对于大多数开发人员来说,这将是全新的,所以如果他们已经知道 HTML/JavaScript/CSS,那么这可能是一个问题。 Flex 的优势在于它不像 HTML 那样受到限制。如果你想要一个属性或数据绑定,你可以直接在标签上做。也许并不总是所有事情的最佳实践,但你可以。

    ExtJS 采用了使用 JavaScript 增强标准标记的方法,因此虽然您的 HTML 确实需要做好,但真正发挥作用的是 JavaScript。

    组件/功能

    Flex 更擅长数据处理。它使用 E4X,这是一种使用点语法的内联 XML 查询语言。 BookCase.Books.Book[@id=43].@title,例如。

    ExtJS 也做数据绑定,但它更冗长,而且不像 Flex 那样简单。

    Flex 有很多非常好的内置组件,用于布局建模、输入和图表。它们易于使用,具有通用样式界面(通常),并且可以具有自定义样式和 CSS 子集,以及一些专有扩展。 ExtJS 使用标准的 CSS 标记,而不仅仅是一个子集。

    ExtJS 比 Flex 有更多的插件和组件,而且 Menu 控件的可定制性更高,外观也更好。默认样式在 ExtJS 中也更漂亮一些。

    布局引擎

    在我看来,Flex 赢得了这一胜利。如果你想要一个列布局,你可以做一个网格或一个流布局来实现它,并且在大约 4 行 MXML 中。 Ext 中同样需要一个 Javascript 对象通过布局类传递。 IMO,实际使用起来更加困难。

    实施

    这两个系统都易于部署和维护。复制文件,如果您正在进行持续集成,两者都可以工作。

    可测试性

    ExtJS 可以使用 jsUnit,Actionscript 可以使用 FlexUnit。管理这种可测试性的难易程度完全取决于您对开发风格的控制。这两个框架都将导致 UI 与值得测试的代码混合在一起,默认情况下 ExtJS 需要更多的分离。

    如果设置正确,这里没有明显的优势。

    性能

    令人遗憾的是,Windows 上的 Internet Explorer 具有最好的 Flash 性能。如果您使用的是 Mac,您可能会在初始插件加载过程中看到速度缓慢。生产中的 Flex 需要运行生产版本,并且您需要运行生产 Flash 播放器,而不是调试版本。在我们的环境中,正式版 + 正式版 Flash Player 将初始加载时间缩短了 4-6 秒,因此请务必比较苹果。

    动画在 Flash 中会更快,但老实说,除非您进行大量数据处理,否则您不会真正看到很多性能问题。如果这个应用程序有很多动画图表、滑动动画和类似的东西,你应该使用 Flash。这就是它的目的,它擅长于此。如果你只是想隐藏和显示屏幕的某些部分,或者做一些基本的动画,ExtJS 会赢。

    可维护性

    两者都有成为怪物的严重潜力。如果每个人都用 MXML 编写代码并且从不编写脚本或外部 CSS,那么 Flex 将是一个怪物。如果你过度设计如何处理数据和布局管理器,ExtJS 将是一个怪物。

    好消息是,两者都可以以开发人员友好的方式成功维护,并且都可以融入持续集成过程,从头到尾。

    希望这会有所帮助。

    【讨论】:

    • 很好的答案。我完全同意。如果您在 Web 前端方面遇到困难并且没有任何充分的理由使用 HTML/CSS,那么 Flex 可能更适合。
    • 很好的答案!我要补充一点,Flex/Flash Player 支持 AMF,一种二进制数据传输协议;它为数据传输提供了比 XML 小得多的大小。大多数服务器端语言支持某种形式的从服务器端对象到 AS3 对象的自动转换,因此您不必在客户端手动进行该处理。我还要补充一点,Flex 有很多工具选项,包括 Flash Builder 和 Flash Catalyst、PowerFlasher FDT、IntelliJ 和 2 个 Visual Studio 插件。如果您需要,交互式调试器和探查器非常棒。我不确定 extJS 提供什么工具
    • 是的,您也可以随时 gzip 您控制的 XML 有效负载。除了在您的服务器上设置 15 分钟外,无需任何工作。我还应该提到,Flash 在数据处理方面通常更快,而不仅仅是动画。运行循环的 XML 数据和数组通常更快,尤其是在客户端运行 Flash 10 时。
    • 自 2010 年以来发生了很多变化。ExtJs 4 已经发布,Flex 开源了。今天你的答案会一样吗?
    • 我对 Ext 4 的拜占庭式架构有一些非常强烈的分歧。IMO,它很笨拙,但仍然可以用它构建好东西。显然,世界正在远离 Flash,但我认为 ExtJS 不一定是你应该转向的地方。
    【解决方案2】:

    我同意 Jordan 关于 Flex 优于 ExtJs 的架构和可维护性优势的观点,但是,在两者都开发过大型系统后,我会像同意 Jordan 一样肯定地说: Flex 作为前端比 ExtJs 慢得多。通常,一旦 Flex 前端接收到数据,将其渲染为网格,比使用 ExtJs 执行完全相同的操作要慢得多。此外,Flex 中的屏幕更新存在 Java 小程序所具有的问题 - 灰色区域没有那么快地刷新。用户体验比 ExtJs 好得多,尤其是当您的数据集变得很大时。无论您使用什么浏览器,Flex 都无法快速执行。

    Flex 中的渲染也不像在 ExtJs 中那样锐利。查看小部件和文本,并将它们并排比较,您就会明白我的意思。

    因此,总而言之,虽然 Flex 中的开发优于 ExtJs,但用户体验却相反,ExtJs 在那里胜出。

    【讨论】:

      【解决方案3】:

      仅供参考,对于任何在 2012 年底偶然发现这个问题的人,因为 Flex 在今年早些时候由 Adob​​e 开源(阅读:“已放弃”),您应该认真考虑它是否是新开发的最佳选择观点。其实在Adobe的own words

      从长远来看,我们相信 HTML5 将是最好的技术 企业应用程序开发。

      虽然当然有许多 HTML5 框架可用,但对于 Flex 开发人员来说,Ext 实际上是一个不错的过渡(所以有人告诉我,我自己从未使用过 Flex)。组件模型、UI 小部件、布局概念和一般开发风格都非常相似,与我共事过的 Flex 开发人员往往很容易理解 Ext 概念。

      【讨论】:

        猜你喜欢
        • 2011-12-28
        • 2013-05-16
        • 1970-01-01
        • 2010-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        相关资源
        最近更新 更多