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