代码之家  ›  专栏  ›  技术社区  ›  Henry

针对内部系统前端的flex和extjs,它们的优点和缺点是什么?

  •  5
  • Henry  · 技术社区  · 15 年前

    回顾我刚刚构建的一个内部系统,这是一个普通的服务器/页面模型,在某些UI组件中很少使用Ajax。我不确定我是否对最终结果满意,因为似乎我们在前端花费了太多时间。不太喜欢为样式设计和确保CSS正常工作而烦恼。

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

    flex和extjs相比如何?也许在这些地区?

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

    请不要关闭这个,我只是要求PPL对flex、extjs或两者都有经验的反馈。

    谢谢大家!

    3 回复  |  直到 10 年前
        1
  •  7
  •   Jordan    15 年前

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

    如果我现在必须选择,我会选择灵活。数据绑定和服务器通信非常容易、直观和快速设置。你会发现,如果你做了大量的布局和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有更多的插件和组件,菜单控件更可定制,看起来更好。默认样式在extjs中也有点漂亮。

    布局引擎

    在我看来,flex赢得了这场胜利。如果您想要一个列布局,您可以做一个网格或一个流布局来实现它,并且在大约4行MXML中。ext中的相同要求通过布局类传递一个javascript对象。在我看来,实际工作更困难。

    实施

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

    可测试性

    可以将JSUnit用于extjs,将flexUnit用于actionscript。管理这种可测试性的容易程度完全取决于您对开发风格的控制。这两个框架将导致UI与值得测试的代码的混合,而extjs在默认情况下需要更多的分离。

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

    性能

    遗憾的是,Windows上的Internet Explorer具有最佳的闪存性能。如果您使用的是Mac,则在初始插件加载期间可能会看到缓慢。生产中的flex需要运行一个生产版本,而您需要运行生产Flash播放器,而不是调试版本。在我们的环境中,ProductionRelease+ProductionFlashPlayer将初始加载时间减少了4-6秒,因此请确保您比较了苹果。

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

    维修性

    两者都有成为怪物的巨大潜力。如果每个人都用MXML编写代码,从不编写脚本或外部CSS,那么flex将是一个怪物。如果您全面了解如何处理数据和布局管理器,那么extjs将是一个怪物。

    好消息是,两者都可以以一种对开发人员友好的方式成功地维护,并且都可以适应持续的集成过程,从开始到结束。

    希望这有帮助。

        2
  •  2
  •   user1931444    12 年前

    我同意乔丹关于flex相对于extjs的体系结构和可维护性优势的观点,但是,在这两个方面都开发了大型系统之后,我将像赞同乔丹一样,得出结论: 作为前端的flex比extjs慢得多。通常,当Flex前端接收到数据后,将其呈现为网格,比使用extjs执行完全相同的操作要慢得多。此外,Flex中的屏幕更新也有Java应用程序无法快速更新的灰色区域的问题。用户体验比extjs要好得多,尤其是当数据集变大时。无论使用什么浏览器,flex都无法快速执行。

    在flex中的渲染也不像在extjs中那样锐利。看看这些小部件和文本,并排比较它们,你就会明白我的意思。

    综上所述,尽管在flex中开发优于extjs,但用户体验恰恰相反,extjs在这方面获胜。

        3
  •  2
  •   Brian Moeskau    12 年前

    仅供参考,对于截至2012年底还在这个问题上犹豫不决的人来说,由于Flex是今年早些时候由Adobe开源的(阅读:“放弃”),您应该强烈考虑它是否是目前新开发的最佳选择。事实上,在Adobe的 own words :

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

    当然,有许多HTML5框架可用,但是对于Flex开发人员来说,ext实际上是一个很好的转换(所以我被告知,我自己从未使用过Flex)。组件模型、用户界面小部件、布局概念和一般的开发风格都相当相似,我曾经工作过的flex开发人员往往很容易理解ext概念。