html5未出现之前,RIA(富媒体应用)领域的技术解决总是各有所长,并没有太多的技术争议。众多开发者一致的观点,Adobe体系中,数字交互展示等这些交互功能的实现,flash做不到的flex来实现。.NET项目的解决方案选择,Silverlight曾是最优选择。
曾几何时,开发人员对flex顶礼膜拜,Flex也大有“唯我独尊”的架势。曾几何时,Silverlight也声名显赫,“威风八面”。但随着HTML 5横空出世,Flex“纡尊”,Silverlight被“降贵”,RIA(富媒体应用)领域的技术解决方案开始变得莫衷一是,众说纷纭。
毫无疑问,作为“明日之星”的html5,大有“一统江湖”的势头。苹果乔布斯对它青睐有加,绝大多数智能手机浏览器也均标示支持HTML 5,同时基于HTML5的网站也如雨后春笋般出现。难道这些标志着HTML5时代来临,他们试图让后来的决策者相信,Flash/Flex时代已经OUT了,作为新贵的HTML5才是RIA富媒体领域的最佳解决方案。然而,事实果真如此吗?作为雨田动画的技术人员,13年没来公司之前亲历过一个HTML5的项目。这个项目最初本是按例用flex作为第一前端解决方案的,不知是决策者觉得“新贵”HTML5更时髦的原因,还是其他的什么冠冕堂皇的理由,总之,由于兼容性的问题富媒体客户端调试后项目最终失败。最初的设计方案中很多功能不得不推倒重来。
我们看看发生了什么都?
在项目实现过程中,首先项目人员的成本增加。要写CSS,要写JavaScript,当然更要写HTML 5标签,富媒体技术点的增加需要更过技术人员的参加同时也就增加了项目成本。其次 HTML由于源码的非保密性要求开发人员更多的去考虑安全保密。毕竟辛苦开发的项目不想被轻易做“拿来主义”。第三在框架的选择上、插件的编写上,HTML5其难度也远大于Flex。
这样我们不难发现,HTML5并不是完美无缺的,当然,也许你也可以举出大堆的例子来体现HTML5的优势。那么,还有“真相”?
真相只有一个:HTML 5与Flex是两种截然不同的技术解决方案。它们是互补的,而非替代。HTML5的出现让Flex更加专注某些方向和领域。和找媳妇一样,合适的才是最好的。那在这里我们不妨谈一下Flash、Flex、HTML 5的技术选择。
首先应该确定的:技术选型不是一成不变的,不存在什么必须选什么。它是由很多综合因素决定的,例如:公司项目的预算,工期要求,技术人员配置,项目属性,可扩展性要求等等。当然,我们仍可以设定技术点,来审视你的应用程序适合采用哪种方案!
Flash的特点:
优势:
1.动画效果比较直观,时间轴(Time Line),舞台和Action Script 3.0可以方便快捷地制作出任意效果;
2.完备的开发工具(Flash Pro CS系列开发工具)、成熟的技术点;
3.成熟的兼容开发,成熟的工作流程(Adobe CS系列全线工具均可以导入到Flash并可二次编辑)。
劣势:
1.iOS不支持Flash Player,这一直是flash备受开发人员诟病的地方。
2.Android 4.1以来也不支持Flash Player。
Flex的特点:
优势:
1.完备的、可以媲美C/S架构(桌面软件)的大量控件支持。
2.与Flash及Adobe CS系列全线工具的完美结合。
3.完整的企业化开发流程及工作流,代码的编写、编译、调试、发布等。
4.多种框架可供选择,并支持高级特性,如:IoC、视图绑定、数据绑定实时更新等。
劣势:
对图文混排支持不完美,无法媲美HTML 5的图文混排,这是Flash系的通病。
生成的SWF容量过大,虽有完善的“瘦身”方案,但仍比HTML方案大很多。
执行效率问题,在某些情景下,比HTML 5的效率要差一些。
储备人员相对HTML来说还是太少。
HTML 5的特点:
优势:
1.完备的技术人员储备。前端开发人员的数量完全可以跟Java、.Net程序员媲美;
2.原生支持而非插件。Flash属于Plug-in方式,而HTML则是浏览器原生支持;
3.完善的控件支持。Bootstrap、基于jQuery的控件比比皆是;
4.真正意义上全平台支持。借助Node.js可以胜任后台(前/后台通吃);
5.借助Coffee Script,可以媲美Ruby/Python的语法糖衣。比Flex拥有更大、更全面、更活跃的社区;
劣势:
1.作为富媒体企业级开发,不具有媲美Flex的工作流及开发流程。
2.作为游戏开发,不如Flash Stage3D,在支持3D及运行效率方面。
3.对初学者来说,用的富媒体技术点大多学习的曲线也就较Flex高一些。编写HTML 5的应用程序,很大程度上还要编写JavaScript和CSS。
4.HTML5依然存在浏览器兼容问题。在大型HTML 5的项目中,HTML 5中依然存在例如执行效率等这些问题,当然flex中也有这个问题。在此基础上还增加了浏览器兼容性、Ajax跨域通讯等新问题。
总结:
Flash:偏展示/工具属性的应用程序。少数据展示、少图文混排、强交互、适合强动画效果。例如:Flash动画页面广告、页游(Flash Game)等。
Flex:偏工具属性的应用程序。多数据展示、少图文混排、适合较强交互数字、适当效果。例如:图片在线修改、企业内部系统、金融系统等。
HTML5:偏应用属性的应用程序。多数据展示、多图文混排、适合较强交互、适当效果。例如:各种传统意义的网站、SNS系网站等。
(山东济南数字互动展示、山东济南多点触控技术、山东济南多媒体制作,ipad电子楼书、企业型富媒体应用)