Flex和ExtJS在内部系统前端方面的优缺点是什么?

5
回顾我刚刚建立的一个内部系统,它采用了常见的服务器/页面模型,并在一些UI组件中略微使用了Ajax。我不确定最终结果是否令人满意,因为似乎我们花费了太多时间在前端上。我不太喜欢为样式和确保CSS正常工作而付出所有麻烦。
所以我开始思考,是否有更好的前端工具?
Flex和ExtJS如何比较?也许在以下这些方面?
- 学习曲线 - 功能性 - 布局(无需维护CSS) - 实现的容易程度 - 可测试性(在Javascript中TDD和在Actionscript中TDD的区别?) - 性能 - 可维护性
请不要关闭此窗口,我只是想向有Flex、ExtJS或两者经验的人征求反馈。
谢谢大家!
3个回答

7
我将从我的执行摘要开始:
如果我现在必须选择,我会选择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有很多非常好的内置组件,用于布局建模、输入和图表。它们易于使用,具有常见的样式界面(通常),可以具有自定义样式和一些专有扩展。ExtJS使用标准CSS标记,而不仅仅是子集。
ExtJS比Flex拥有更多的插件和组件,并且菜单控件更具可定制性和美观性。默认样式在ExtJS中也更漂亮。
布局引擎
在我看来,Flex毫无疑问赢得了这个胜利。如果您想要列布局,则可以使用网格或流布局来实现,并且只需大约4行MXML即可。在Ext中,需要通过布局类传递Javascript对象才能实现相同的效果。在我的意见中,这更难以实际操作。
实施
两个系统都很容易部署和维护。复制文件,如果您正在进行持续集成,则两者都将起作用。
可测试性
您可以使用jsUnit进行ExtJS测试,使用Actionscript进行FlexUnit测试。如何管理这种易于测试的性质完全取决于您对开发风格的掌控。两个框架都会导致UI与值得测试的代码混合,但是默认情况下,ExtJS需要更多的分离。
如果设置正确,则在这里没有明显的优势。
表现
(未完成)
在Windows上,Internet Explorer拥有最佳的Flash性能,但令人遗憾的是,如果你使用Mac,在插件初始加载时可能会感到缓慢。在生产环境中,Flex需要运行生产版本,并且需要使用生产Flash播放器,而不是调试版本。在我们的环境中,生产版本+生产Flash播放器将初始加载时间减少了4-6秒,所以请确保你进行苹果比较。
动画在Flash中会更快,但说实话,除非你正在进行大量数据处理,否则你不会真正看到太多性能问题。如果这个应用程序有很多动画图表、滑动动画等等,你应该选择Flash。它就是为此而构建的,而且做得很好。如果你只是要隐藏和显示屏幕的一部分,或者做一些基本的动画,那么ExtJS会更加适合。
可维护性
两者都有成为“怪物”的严重潜力。如果每个人都在MXML中编写所有代码,从不编写脚本或外部CSS,则Flex将成为一个“怪物”。如果你过度设计如何处理数据和布局管理器,那么ExtJS也会成为一个“怪物”。
好消息是,两者都可以以开发人员友好的方式进行成功维护,并且两者都可以适应一个从头到尾的持续集成过程。
希望这有所帮助。

1
很棒的答案。我完全同意。如果你在网页前端方面遇到困难,而且没有任何好的理由去学习HTML/CSS,那么Flex可能更适合你。 - Mike Sickler
1
太好了!我想补充一下,使用Flex/Flash Player可以支持AMF二进制数据传输协议,这提供了比XML更小的数据传输大小。大多数服务器端语言都支持从服务器端对象自动转换为AS3对象的某种形式,因此您无需在客户端手动进行处理。我还要补充的是,Flex有很多工具选项,包括Flash Builder和Flash Catalyst、PowerFlasher FDT、IntelliJ以及2个Visual Studio插件。如果需要,交互式调试器和分析器非常棒。我不确定extJS提供什么工具扩展。 - JeffryHouser
1
是的,您也可以始终压缩您控制的XML负载。除了在服务器上进行15分钟的设置之外,不需要任何工作。我还应该提到,Flash通常更快地处理数据,而不仅仅是动画。运行XML数据和数组的循环通常更快,特别是如果客户端正在运行Flash 10。 - Jordan
自2010年以来,许多事情都发生了改变。ExtJS 4已经发布,并且Flex已经开放源代码。你今天的回答还会是一样的吗? - mik
我对Ext 4的拜占庭式架构有一些强烈的异议。在我看来,它很笨重,但仍然可以用它构建好的东西。显然,世界正在远离Flash,但我不认为ExtJS一定是你应该转向的地方。 - Jordan
自2010年起,事情有没有发生变化,或者您的想法仍然保持不变? - waspinator

2
我同意Jordan关于Flex在架构和可维护性方面优于ExtJs的观点,然而,作为已经在两者中开发过大型系统的人,我可以很肯定地说:相对于ExtJs,Flex作为前端要慢得多。一般来说,一旦数据被Flex前端接收,将其渲染到比如网格中的速度就比用ExtJs完全相同的操作要慢得多。此外,Flex中的屏幕更新也有Java小应用程序所具有的问题 - 没有及时刷新的灰色区域。尤其是当数据集变得很大时,用户体验比ExtJs好得多。无论使用哪个浏览器,Flex的表现都不太快。

与ExtJs相比,在Flex中呈现的内容也不如ExtJs那么锐利。看看微件和文本,将它们并排比较,你就会明白我的意思。

因此,总结一下,虽然在Flex中进行开发优于ExtJs,但用户体验则相反,这时ExtJs获胜。


2
仅供参考,对于那些在2012年末之后查看这个问题的人来说,由于Flex在今年早些时候(即“被放弃”)被Adobe开源,你应该认真考虑它是否是目前最好的新开发选择。实际上,在Adobe的自己的话中:

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

当然,虽然有许多HTML5框架可用,但Ext实际上是Flex开发人员的一个不错的过渡(我被告知了,我自己从未使用过Flex)。组件模型、UI小部件、布局概念和一般开发风格都非常相似,我与之合作过的Flex开发人员很容易掌握Ext的概念。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接