Flash已死,Deno当立?
2020-05-25 10:21

Flash已死,Deno当立?

本文来自微信公众号:CSDN(ID:CSDNnews),作者:马超,责编:伍杏玲


2020 将走完一半,主流浏览器留给 Flash 的时间不多了:


早在 2017 年 7 月,Flash 的娘家 Adobe 已宣布在 2020年 底终止对 Flash 的支持。


2019 年,微软宣布在 2020 年底内移除对 Flash 的支持。微软表示,自家浏览器移除Flash插件的最后期限是2020年12月前,届时无论是经典版的Edge(Spartan)、还是IE11都将在2020年底告别Flash插件。


在这之前,浏览器领域的绝对霸主Chrome已经对Adobe Flash Player插件动手了,近日Chrome已经通过弹窗提醒部分用户,该浏览器对Flash的支持即将结束。Chrome将于今年12月彻底结束对Adobe Flash Player的支持。目前用户们还可以手动选择启用Adobe Flash Player插件,支持到期后,Chrome将彻底禁止调用Flash插件


这样看来,Flash 距离“寿终正寝”不远了。这项在 PC 时代立下汗马功劳的互动动画技术,将不可逆转地被 Hilo 等基于H5的互动前端技术拍倒在岸上了。


近日,Deno 1.0 正式发布:Node.js之父Ryan Dahl 认为他在设计 Node.js 时犯一些包括安全性、package.json、node_modules等等一系列的错误,并表示这些 Bug 问题严重且不可回避,于是他重新设计了 Deno 脚本语言。


这让我们不禁要问在互联网的前端世界:前浪们是不是太难了?


短视频和小游戏的共同始祖,曾经无比辉煌的Flash


Flash 诞生于 1990 年代初期,当时,FutureWave 推出了一款名为SmartSketch 图形软件,它使用触摸笔而不是键盘来操作。后来,FutureWave 又将 SmartSketch 重新设计成一款能在静态网页上插入动画和视频的工具,取名 FutureSplash Animator,它就是 Flash 的前身。


从上世纪 90 年代末到 2006 年左右,Flash 发展迅速,与目前 Python 的情况不同,当时的程序员如果不和人聊聊“网页三剑客”,简直出门都不好意思和人打招呼,Flash 作为“三剑客”中的绝对C位,风头一时无两。


说几个暴露年龄的梗,比如 2003 年一则Flash视频《大学生自习曲》突然红遍整个网络,据不完全统计,在其推出的一个月内,其播放量就突破了一亿次。可以说是短视频的始祖。


后来如《东北人都是活雷锋》等神曲,也为 Flash 火爆网络增添动力。Flash 还是网页游戏的始祖,如《超级赛车》等经典小游戏,也是基于 Flash。可以说 Flash 争霸 PC 时代的一个重要原因是它极大地降低了制作动画的技术门槛,使得创意产业得到了极大的发展,当时各大广告公司将 Flash 视为非常重要的工具。


在 2006 年之前,Flash 一直被认为会是互联网上“永恒的存在”。


成败皆插件


为何这“永恒的存在”沦为如今主流浏览器放弃的局面?这由于 Flash 的本质决定:  


Flash 适用于低速互联网的内容,因为它的文件非常小。Flash 通过广泛使用矢量图形做到这一点。与位图图形相比,矢量图形需要的内存和存储空间小很多,因为它们是以数学公式而不是大型数据集来表示的。一般来说,Flash 每分钟动画的大小一般不到1M,远比目前的高清视频小得多。


由于 Flash 具备体积小,用户体验却很高的优势,正是 Flash 在十几年前称霸互联网的不二法门。


正是因为放弃使用普通的图片格式而使用矢量图形,这使得Flash并不是浏览器原生的。由于矢量图的渲染,Flash 作为浏览器插件的运行效率并不高,访问电脑资源也很不方便,导致很多程序员在开发的过程中出现许多的问题。


就算成功发布了一款 Flash 应用,浏览器也会被 Flash 插件拖得很慢,电脑会因此变得很卡,所以 H5 技术出现后,很多人就开始转投到转而开发基于H5的互动技术,开发出了 Hilo 等新型互动框架。


不过凭心而论,Hilo 并不是 Flash 的终结者,一切都在 iPhone 开启移动时代后,应用的技术也随之发生改变。


Flash 错失移动时代


2007 年,苹果推出了初代 iPhone,iPhone 的出现给 Adobe 移动端开发带来了问题:Flash 插件运行上的缺点被放大,随着 Flash 日益臃肿,需要大量计算资源才能支持其动画的渲染。在手机端,Flash 运行需要消耗大量电力,但手机的电池有限,以至于苹果选择不支持 Flash。


Flash 需要重新开发才能适应 iPhone,然而 Adobe 并未能和苹果达成最终的合作协议。这个决定为苹果招来了不少批评,人们认为乔布斯不支持 Flash 反应了苹果的封闭。为此,乔布斯在 2010 年发表了一封公开信,表示“iPad 永远不会支持 Flash”,并指出了 Flash 的问题:耗电严重、安全漏洞多,不适合苹果的移动系统


在苹果表态后,YouTube 等网站开始采用基于开放标准的免费软件,这些技术既适合桌面端也适合移动端。2014 年 10 月制定的 HTML5 标准也成为 Flash 的替代品被广泛使用,网站可在没有插件的情况下运行视频和动画。Adobe CEO Shantanu Narayen 曾表示,Flash 仅占 Adobe 营收总额的一小部分。因此没有对 Flash 持续进行输血,这也加速了Flash的落幕。


雪上加霜的是,Flash 近年来频繁爆出安全漏洞,这给 Flash 带来了更大的打击,Gartner 高管 Danny Brian 在2014年曾表示,Flash 的消亡已经不可避免。


Node 之父反 Node,Deno 强势崛起?


去年底,Node.js 之父 Ryan Dahl 在柏林 JS 大会上发表了题为《Design Mistake in Node》的主题演讲,表示“Node 失误太多无法回避,Deno 前景明朗”。


“Deno”是 Node 的反写,有反 Node 的意思,目前看 Node 与 Deno 的主要参数比较如下:


项目

Node

Deno

入口

package.json配置

import url 直接引入

API 引入方式

模块引入

全局对象

安全

无安全限制

默认安全

Typescript

第三方,如通过 ts-node 支持

原生支持

包管理

npm + node_modules

原生支持

异步操作

回调

原生支持Promise

包分发

中心化 npmjs.com

去中心化 import url

打包、测试、格式

第三方eslint、gulp、webpack、babel

原生支持


Deno 的确针对 Node 的很多缺点进行改进,笔者在两行代码的库引发“血案”:坑了数百万个项目曾经介绍过,Node.js的依赖管理可能会引发小项目引发大血案的情况。


笔者认为,与 Flash 底层插件运行的方式不同,Node 的缺陷并不是无法解决的,Ryan Dahl 提出 Deno 应该有督促,请 Node 社区尽快直面问题的考虑。


《三体》里有一句“消灭你,与你无关”,对于 IT 技术的发展亦然。IT 技术发展日新月异,曾经的繁荣并不能代表未来的高枕无忧。


就如 Flash 一样,曾经红极一时的霸主也难逃最终的落莫结局,因此给 Node 的时间窗口并不长,尽快集合社区的力量解决问题才是正道。


本文来自微信公众号:CSDN(ID:CSDNnews),作者:马超

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
正在改变与想要改变世界的人,都在 虎嗅APP