从flash到html5(一)
sshong 发表于2013年10月29日 15:07:57 更新于2013年10月29日 15:14:03
从flash到html5,从actionscript到javascript

一、前言
这些年,相信大家对flash与html5之争也见怪不怪了,这里很多人都是搞flash的,作为一名技术人员,我觉得不应该有门户之见,要博采众家之长,一门技术能够火起来,甚至扬言要取代某种技术,我们首先要做的是去熟悉他,看看他到底有什么过人之处,任何出于个人情感的争辩都没有意义。

我有十来年的flash经验,从最开始的flash动画,到actionscript2到actionscript3,再到flex,也算是自认为flash老鸟了,当html5火热时,我也一样感到彷徨和失落,觉得flash这么好的技术为什么总有人有偏见呢?面对网上充斥的各种争辩,也很迷茫,难道flash真的要被抛弃了吗?

当我静下心来去真正了解另一片天地时,我发现我的思想变了,变淡然了。我融入到html5、js、css中去时,我发现flash和html5本来就不是什么对立面的东西,他们都是web世界里基石,而且他们都在让web世界变得更加丰富多彩,他们技术上有些许的类似,功能上有一些重叠,但这不应该成为对立的理由,希望所有flash世界的孩子和html5世界的孩子能够明白,他们都是web前端技术,是可以很好地互补和共处。也希望flash世界里的孩子能够相信adobe,让flash专注于air、game和media的策略是有想法和深思熟虑的的。

一直想写一个专题,讲讲flash和html5,也算是为flasher了解html5的一个跳板,希望大家能够有所收获,文中的一些观点仅代表个人,如有异议,欢迎指正探讨。

最后,不管flash这门技术最终怎样,flash永远是我的first love。

二、简述历史
1、flash
相信大家都知道flash技术的起源,当html还停留在静态页面时,边加载边播放的flash正如他的意思一样闪动了整个web世界,flash动画瞬间火了起来。

有幸经历过那个flash动画大爆炸的时代,小小火柴人、showgood大话三国等等动画风靡网络,闪客帝国、蓝色理想等flash社区人潮汹涌,那是一个属于闪客们的时代,我也在那时接触到了flash,一发不可收拾,彻底的爱上了他。
直到今日,flash依然是动画界的明星,喜羊羊与灰太狼就是用flash做的。

再后来,flash加强了他的编程能力,actionscript开始崭露头角,到了actionscript2算是真正的能够编写程序的语言了,actionscript2跟javascript很像,因为他也是基于ECMAScript。那个时候的代码都写在帧里,写在元件上,有用actionscript2写过应用的人都应该知道,写actionscript2程序还是比较痛苦的。再后来flash从姓macromedia变成了姓adobe,flash8也成为actionscript2时代的经典绝唱。

actionscript3出来了,世界变天了。Actionscript从来没有如此强大过,RIA(富媒体网络应用)开始热火,天地会也就是那时候开办的吧。Flash从一开始就是以动画为基石,所以到今天都有帧、元件的概念。为了让flash更适合编程人员,flex应运而生了,跟vb一样,简单的拖拉控件就能做一个web程序,实在是太令人兴奋了,至此flash基本上分割为两大阵营:动画和编程,而且还可以互相渗透,flash世界充满了活力。RIA之后,网络视频、webgame让flash再一次成为炙手可热的技术,很多人从不同的领域跳入到flash圈,flash人才供不应求。Air的出现让flash延伸到了桌面本地应用、手机本地应用领域。

跟人生一样,当一样东西辉煌到了顶端后,不可避免会有衰落,乔布斯的抵制,html5的到来,flash一下子成了众矢之的,安全性、效率低、卡死浏览器等等等等托词都成为抵制flash的理由,而在此之前,他们都在享受着flash带给web世界的乐趣,很荒唐,不是吗?

2、html5
当flash如火如荼时,javascript还停留在小敲小打的境界,alert一下,document.write一下。html、css也还是各个浏览器各自为政,ie6这个难啃的骨头一直坚挺,那时候写web前端的人真的很苦,要兼容各种各样的浏览器,写各种各样的hack,虽然时至今日还需要了解这些知识,但是已经进步了太多太多。

再后来,firefox、webkit、chrome的到来,让前端世界的人们看到了曙光,特别是google v8引擎,让javascript的执行效率大幅度提升,ajax的出现让html页面不再是整体提交刷新,具备了页面动态刷新的能力,nodejs的出现更是让javascript的触角伸到了后端。与此同时,随着浏览器的竞争升级,各大厂商也开始寻求统一,新的html标准也开始提上了日程,各种新的html特性、新的javascript api、css3特性得到了承诺,web前端技术开始作为一个新兴的领域火热起来,html5作为一个概念开始火热起来,各种开源前端框架、类库出现了,prototype、yui、jquery等等,html5开发前端应用的能力已经具备,而这里面有很多与flash的领域(特别是RIA)重叠。

智能移动设备的到来似乎是一个分水岭,当乔布斯禁止flash进入ios浏览器时,html5与flash之争一下子热闹起来,争了几年了,flash没有死,air发展的挺好,html5也在不断进步中。

这大概就是两门技术的简单历史了,纯手打,估计会有一些纰漏,欢迎指正。

二、本质区别
1、Flash是actionscript、flex、flash动画的集合,html5是javascript、css、html的集合。
2、Flash天生就是做动画的,html5不是。所以flash里有帧、有元件、有场景的概念,html5没有。
3、Flash通过插件在浏览器里运行,javascript不是。所以flash依赖flashplayer,html依赖浏览器的javascript引擎、渲染引擎。
4、Flash最终编译为单一文件,html5不需要,是分散的html、javascript、css文件。actionscript都是在写代码时引入各种包,而javascript则依赖先后加载顺序引入各种包,所以javascript界有AMD、CMD的模块依赖等概念,当然也有把所有javascript合并压缩的工具。
5、actionscript3更加彻底的面向对象,或者说跟java、c#等很像,而javascript则更加倾向于函数式编程,写惯了actionscript、java等,你或许会觉得javascript的代码有点乱,因为思路不一样了,javascript的世界里全是闭包。

三、相同点
1、actionscript、javascript都是前端语言,都是事件驱动,都是ECMAScript,都是单线程,都可以反编译,都可以做加密、混淆。
2、Flex里也有css,跟html的css类似。
3、Flex里的mxml标签描述,跟html的各种标签类似。
4、前端编程的一些基本思想不会改变,组件化、mvc、延时渲染、减少重绘等概念都是一样一样的。

好了,第一篇先写这么多,后面再慢慢细化吧。欢迎探讨。
标签:无分类:JS&Html5阅读:1932
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅