Flash 已死,Deno 当立?

Flash的兴衰与Deno的崛起
Flash曾是互联网互动动画技术的主导者,但因插件运行效率低下及安全漏洞频出,逐渐被H5技术取代。随着主流浏览器如Chrome、Edge和IE计划在2020年底停止支持,Flash走向终结。与此同时,Node.js之父Ryan Dahl创建的Deno脚本语言,旨在修正Node.js的缺陷,展现出强劲的发展势头。

作者 | 马超

责编 | 伍杏玲

出品 | 优快云(ID:优快云news)

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 的时间窗口并不长,尽快集合社区的力量解决问题才是正道。

共勉。

【END】

更多精彩推荐
  ☞芯片供应被掐断,华为能否安全渡劫?
☞OceanBase 十年:一群追梦人的成长史
☞2 年 6 个月 11 天,外包到阿里的修仙之路!| 原力计划
☞服务器软件大扫盲!
☞绝悟之后再超神,腾讯30篇论文入选AI顶会ACL
☞中本聪并没有出现,那真相是?
你点的每个“在看”,我都认真当成了喜欢
<think> 嗯,用户想了解Deno的应用场景,这需要结合之前的引用资料来整理。引用[1]的目录里明确提到"Deno的应用场景"这一章节,引用[3]提到webview_deno在桌面应用开发中的潜力,引用[4]则重点讨论了边缘计算场景——这些都是核心方向。 用户特意强调"不是真正需求"的提示很有趣,说明ta更关注实质内容而非形式。考虑到上次回复已经列出5个场景,这次需要补充新维度:比如引用[2]提到的"Web开发场景下已实现Node大部分功能"这点就可以展开,虽然简单带过但实际包含API服务、SSR等丰富场景。 有点意外的是引用[4]提到的物联网边缘计算被多数资料忽略,这个独特角度值得单独强调。另外突然想到安全特性会衍生出哪些特殊场景呢?比如需要权限管控的Serverless环境或许更倾向选择Deno。不过用户没问这么深,作为补充点即可。 最后注意到所有引用都回避了具体案例,可能需要主动建议实战方向:比如告诉用户"用Deno+Fresh框架建博客"就是典型的Web应用场景,这样比单纯列条目更有帮助。 </think> 基于引用资料和Deno的特性,以下是Deno的主要应用场景及技术优势: ### 一、Web开发场景(引用[2]强化) 1. **全栈JavaScript/TypeScript开发** - 内置TypeScript支持,无需额外配置 - 示例:快速构建REST API ```typescript import { serve } from "https://deno.land/std@0.150.0/http/server.ts"; serve((req) => new Response("Hello Deno!"), { port: 8000 }); ``` 2. **服务端渲染(SSR)** 配合现代框架(如Fresh、Aleph.js)实现高效SSR,相比Node.js减少工具链依赖。 ### 💻 二、桌面应用开发(引用[3]延伸) 通过 **`webview_deno`** 构建跨平台桌面应用: ```typescript import { WebView } from "https://deno.land/x/webview/mod.ts"; const webview = new WebView({ title: "Deno App", url: "https://deno.land" }); webview.run(); ``` 优势: - 直接调用系统Webview组件 - 单文件分发(Deno编译为独二进制文件) ### 🌐 三、边缘计算与物联网(引用[4]重点) 在边缘场景的优势: | 特性 | 应用价值 | |-------------|----------------------------| | 单文件部署 | 减少设备依赖,提升部署效率 | | 安全沙箱 | 防止恶意脚本访问硬件资源 | | Rust底层 | 低内存占用(适合资源受限设备)| 典型用例: ```mermaid graph LR A[传感器数据] --> B(Deno边缘网关) B --> C{实时处理} C --> D[异常警报] C --> E[数据聚合上传] ``` ### 🛠️ 四、工具链开发 1. **脚本工具替代** - 替代Python/Bash脚本:利用TS类型系统编写可靠工具 - 示例:自动化文件处理 ```typescript for await (const dirEntry of Deno.readDir(".")) { if (dirEntry.name.endsWith(".log")) await Deno.remove(dirEntry.name); } ``` 2. **DevOps工具** 集成测试、Lint等能力(`deno test`, `deno lint`内置) ### 🔒 五、安全敏感场景 1. **权限管控** 细粒度权限声明避免越权操作: `deno run --allow-net=api.example.com server.ts` 2. **沙箱化插件系统** 第三方插件在独权限策略下运行 ### 📚 六、教育领域 - 零配置学习环境 - 浏览器兼容API降低学习曲线 ### ️ 局限与挑战 1. **成熟度** 部分Node.js生态库兼容性需通过`npm:`前缀导入 2. **企业采纳** 生产环境案例仍少于Node.js(但快速增长中) > **技术演进**:引用[4]指出Deno在边缘计算场景的特殊价值,其单文件分发和安全性正推动在IoT领域的应用[^4]。而引用[3]强调的`webview_deno`则开辟了桌面开发新路径[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优快云资讯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值