浅谈 Flash/Flex/HTML5 技术选型
在HTML5发布以前,RIA领域的技术解决方案一直相都是各展所长,并无争议。Adobe体系中,Flash做不了的事情,Flex可以做到;.Net系决策者在选用RIA解决方案时,Silverlight是不二之选。
曾经我对Flex的迷恋到了欲罢不能的地步,与我有相同想法的人亦不在少数,Flex也大有“一统江湖”的趋势。然而,随着HTML 5横空出世,Flex“易主”,Silverlight被“雪藏”,RIA领域的技术解决方案开始变得扑朔迷离。
HTML 5无疑是“明日之星”,苹果公司前CEO乔布斯对它赞赏有加,绝大多数智能手机浏览器均支持HTML 5,基于HTML 5的网站也如雨后春笋般出现。这些似乎预示着HTML 5时代来临,人们试图让决策者相信,Flash/Flex时代已经过去了,HTML 5才是RIA领域的最佳解决方案。然而,事实果真如此吗? 我曾经见过一个项目,原计划使用Flex做为前端解决方案,由于当时HTML 5“盛行”,最终决策者决定弃用Flex而转投HTML 5。 接下来会发生什么呢?
- 由于HTML 5的浏览器兼容性问题,导致需求设计阶段的很多功能都需要推倒重做。
- 在实现过程中,不仅要写HTML 5标签,还要写CSS与JavaScript,对于项目来说,增加了人员构成,项目的开发成本也随之增加。
- HTML项目可以方便获取源码,因此需要增强保密性及安全性设计。
- 在插件的编写、框架的选择上,其难度也要远远大于Flex。
从上述情况可见,HTML 5也存在劣势,并不完美。同样,我也可以列举出诸多例子来体现HTML 5的优势。那么,“真相”到底是什么?
真相只有一个:
HTML 5与Flex是两种截然不同的技术解决方案。HTML 5的出现让Flex更加专注某些方向和领域。所以,它们是互补的,而非替代。因此,“替代”一说并不准确。
虽然,上述例子只是小概率事件。但概率小,不代表不发生,不代表不典型。所以,在这里我想跟大家谈一下Flash、Flex、HTML 5的技术选型。
首先明确一个观点:技术选型没有既定的规律可循,它是由诸多因素决定的,例如:开发人员的技术知识结构是否胜任、项目的开发成本、开发人员构成、项目的开发周期、项目的属性等等。
但是,我们仍可以从这些技术的特点出发,辨别你的应用程序适合采用哪种方案!
Flash的特点:
优势:
- 借助时间线(Time Line)和Action Script 3.0可以方便地制作出任意效果动画。
- 完备的开发工具。(Flash Pro CS系列开发工具)
- 完备的工作流。(Adobe CS系列全线工具均可以导入到Flash并可二次编辑)
劣势:
- Flash Player不支持iOS。
- Flash Player不支持Android 4.1+。(Android 4.0以下系统均可支持)
Flex的特点:
- 优势:
- 完备的、可以媲美C/S架构(桌面软件)的大量控件支持。
- 与Flash及Adobe CS系列全线工具的完美结合。
- 完整的企业化开发流程及工作流(代码的编写、编译、调试、发布等)
- 多种框架可供选择,并支持高级特性,如:IoC、视图绑定、数据绑定实时更新等。
- 劣势:
- 生成的SWF过大。(虽有完善的“瘦身”方案,但仍比HTML方案大很多)
- 效率问题。(在某些情景下,比HTML 5的效率要差一些)
- 较差的图文混排支持。(无法媲美HTML 5的图文混排,这是Flash系的通病)
- 储备人员相对HTML来说还是太少。
HTML 5的特点:
- 优势:
- 完备的技术人员储备。(前端开发人员的数量完全可以跟Java、.Net程序员媲美)
- 借助HTML 5的诸多新特性,在某些层面完全可以取代Flash技术。(Flash属于Plug-in方式,而HTML则是浏览器原生支持)
- 不逊色于Flex的大量控件。(Bootstrap、基于jQuery的控件比比皆是)
- 真正意义上全平台支持。
- 借助Node.js可以胜任后台(前/后台通吃);借助Coffee Script,可以媲美Ruby/Python的语法糖衣。
- 比Flex拥有更大、更全面、更活跃的社区。
- 劣势:
- 作为企业开发,不具有媲美Flex的工作流及开发流程。
- 作为游戏开发,在支持3D及运行效率方面,不如Flash Stage3D。
- 编写HTML 5的应用程序,很大程度上还要编写CSS与JavaScript,对初学者来说,学习曲线较Flex高一些。
- HTML 5依然存在浏览器兼容问题。(随着W3C与WHATWG的分裂,估计这种情况会被进一步加深)
- 在大型HTML 5的项目中,Flex遇到的问题在HTML 5中依然存在(例如:效率问题),在此基础上还增加了浏览器兼容性、Ajax跨域通讯等新问题。
下面的表格,描述了这三者在一些关键点的比较:(图1)
<iframe id="iframe_0.8245040194952042" style="border: medium; border-image: none; width: 712px; height: 345px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://static.oschina.net/uploads/img/201208/14170710_9uus.png?_=3834158%22%20style=%22border:none;max-width:712px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.8245040194952042',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>
下图使用区分法,来辨别应用程序的技术选项方案:(图2)
<iframe id="iframe_0.06365403204609848" style="border: medium; border-image: none; width: 712px; height: 451px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://static.oschina.net/uploads/img/201208/14170716_2ofM.png?_=3834158%22%20style=%22border:none;max-width:712px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.06365403204609848',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>
下面的表格从“项目属性”角度来比较这三者之间的优劣性:(图3)
<iframe id="iframe_0.92367594734007" style="border: medium; border-image: none; width: 712px; height: 321px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://static.oschina.net/uploads/img/201208/14170754_0K29.png?_=3834158%22%20style=%22border:none;max-width:712px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.92367594734007',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>
总结:
- Flash:
- 适合强交互、强效果、少数据展示、少图文混排、偏展示/工具属性的应用程序。例如:Flash交互广告展示、页游(Flash Game)等。
- Flex:
- 适合较强交互、适当效果、多数据展示、少图文混排、偏工具属性的应用程序。例如:图片在线修改、企业内部系统、ERP系统、金融系统等。
- HTML 5:
- 适合较强交互、适当效果、多数据展示、多图文混排、偏应用属性的应用程序。例如:Google系网站、各种传统意义的网站、SNS系网站等。
浅谈 Flash/Flex/HTML5 技术选型相关推荐
- html5对flash的影响,浅谈flash和html5的发展趋势对站长的影响
随着html5的出台,很多人说flash有危机了,flash要淘汰了.笔者认为,其实不然,以上观点纯粹是危言耸听,flash在短期之内不会有任何问题,可能要经过一个年代之后,新的技术会替代.以下为个人 ...
- 我的FLASH情结2010—— 浅谈FLASH WEB GAME与创业
声明:本文系转载,对原文有删节,出处链接地址 ★目录: →FLASH WEB GAME的系统架构 →FLASH WEB GAME的前端架构与人事分工 →前端与美术的配合 →前端与后端的配合 ===== ...
- 【推荐】我的FLASH情结2010——浅谈FLASH WEB GAME与创业(2)
★FLASH WEB GAME的前端架构与人事分工 →前端的主程序架构和模块划分与人手和人事分工是紧密联系在一起的,而这些很大程度上又是由项目本身决定的.纵观现在国内绝大多数FLASH WEB GAM ...
- [转]我的FLASH情结2010——浅谈FLASH WEB GAME与创业(下)
我的FLASH情结2010--浅谈FLASH WEB GAME与创业 ★前端与美术的配合 →老闪客们应该都知道,FLASH这款软件在历史很长一段时间内都是用来做动画的,闪客和美术在这段时间内本就是同根 ...
- tcp转串口_浅谈串口转以太网技术
浅谈串口转以太网技术 1.概述串口转以太网目前可以采用串口转以太网模块来实现,变得非常简单易用,但是在该技术中出现的一些新问题.使用误区需要引起注意.串口转以太网并不是简单传输媒介的变化,而是串口到T ...
- 5月3日云栖精选夜读:乾隆会判阿尔法狗死刑吗 ——浅谈当前人工智能的技术进化...
人生自古谁无死,乾隆会判阿尔法狗去死?一个能打败李世石的阿尔法狗并不可怕,而一个具备打败李世石实力,但却在某些场景下故意输给李世石的阿尔法狗,那才真正可怕! 技术分享 必须使用301重定向的运用场景 ...
- 浅谈软件定义网络(SDN)技术研究现状和发展趋势
浅谈软件定义网络(SDN)技术研究现状和发展趋势 友情全文PDF链接:浅谈软件定义网络(SDN)技术研究现状和发展趋势.pdf-网络基础文档类资源-CSDN下载 ...
- 浅谈常见的NoSQL技术方案和选型
前言 在互联网和大数据的背景下,越来越多的网站.应用系统需要支撑 海量数据存储.高并发请求.高可用.高可扩展性 等特性要求.传统的 关系型数据库 已经难以应对类似的需求,各种各样的 NoSQL(Not ...
- 计算机网络技术企业环境,浅谈高职院校计算机网络技术专业教学环境建设
共享型专业教学资源库是指以课程为中心将各个专业作为教学资源库的基本单位,下面是小编搜集整理的高职院校计算机网络技术专业教学环境建设探究的论文范文,欢迎阅读参考. [摘 要] 高职院校计算机网络技术专业 ...
最新文章
- 2020第11届蓝桥杯省赛Python题目
- php表单传值哪几种方式,PHP表单传值的方式有哪些?
- 绝了!这个开源验证码项目,差点晚上瘾...
- Saiku Table展示数据合并bug修复(二十五)
- 开发工具总结(2)之全面总结Android Studio2.X的填坑指南
- Nginx不停机优雅升级
- 击鼓传花c语言编程题,c语言-第5章 循环程序设计.ppt
- 案例:演示PreparedStatement对象的使用
- 从C#开发人员到Windows Phone 7高级开发人员只需3周 – 序
- 通达信标记符号_通达信符号大全
- Pr剪辑上分攻略 -- 动漫电影混剪
- 高通SM660平台GPS 简介
- javascript从入门到跑路-----小文的js学习笔记(6)-----三大流程控制语句---顺序控制、分支控制、循环控制
- ubuntu 或者虚拟机连接u盘
- linux下低格u盘,u盘低级格式化操作
- shell语法中的空格和分号,引号
- 淘宝店铺怎么发逛逛?发逛逛有什么要求?
- laravel图形验证码(借用了TP的图形验证码类)非常好用简单,非常适合前后端分离的项目
- 5G多卡聚合路由器在高速公路收费中的应用
- Springer出版社旗下投稿word模板