我将从我的执行摘要开始:
如果我现在必须选择,我会选择 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 将是一个怪物。
好消息是,两者都可以以开发人员友好的方式成功维护,并且都可以融入持续集成过程,从头到尾。
希望这会有所帮助。