遭老牌 Node.js、新贵 Bun “围攻”,Deno 之父紧急求变!

遭老牌 Node.js、新贵 Bun “围攻”,Deno 之父紧急求变!
文章图片
【CSDN编者按】截至目前 , Node.js仍然是使用最为广泛的JavaScript运行时环境 , 但是同样出自Node.js之父RyanDahl之手的Deno却更加安全 。 不过近日 , 一款集构建、转译、依赖管理于一身的高性能JavaScript运行时Bun横空出世 , 在Server、Sqlite、ffi等方面都超过了Node和Deno , 似乎是迫于压力之下 , Deno于近日宣布迎来重大改革 。
整理|苏宓出品|CSDN(ID:CSDNnews)对于使用JavaScript的开发者而言 , 想必对Node.js并不陌生 。 基于JavaScript的Node.js平台是由美国知名软件工程师RyanDahl于2009年推出 , 其最初是作为ApacheHTTPServerforLinux和MacOS的更具可扩展性的替代品而开发 。 时至今日 , Node.js已被很多人用于生产环境 。
不过 , 在2018年 , RyanDahl发表了一次以「我为Node.js感到后悔的十件事」的主题分享 , 他表示在设计Node.js时犯一些包括安全性、package.json、node_modules等系列的错误 , 并称这些Bug问题严重且不可回避 , 于是他用了两年的时间进行了重新开发 , 并在2020年5月正式推出了基于V8引擎和Rust语言所创建的JavaScript、TypeScript执行环境——Deno 。
然而被赋予厚望的Deno语言 , 经历了2年的发展 , 虽然在安全性等维度更胜Node.js一筹 , 但其发展似乎没有达到预期 。 而就在近日 , 一款集构建、转译、依赖管理于一身的高性能JavaScript运行时Bun(https://bun.sh/)横空出世 , 甚至在其官网上 , 该团队分享三种技术在Server、Sqlite、ffi三个方面的性能对比 , 结果显示 , 初出茅庐的Bun远超node、deno , 这不禁让“前辈们”感到了巨大压力 。
遭老牌 Node.js、新贵 Bun “围攻”,Deno 之父紧急求变!
文章图片
遭老牌 Node.js、新贵 Bun “围攻”,Deno 之父紧急求变!
文章图片
遭老牌 Node.js、新贵 Bun “围攻”,Deno 之父紧急求变!
文章图片
不知是巧合还是为了应对这种“紧急”局面 , 8月15日 , RyanDahl在官网上发布了一篇《BigChangesAheadforDeno》的声明 , 其中分享了未来几个月将对Deno的一些重大变革 , 包括使Deno能够轻松导入npm包 , 也旨在让Deno成为最快的JavaScript运行时、提升开发者的体验等 。
变革一:与Node、npm的兼容性
正如上文所述 , Deno作为后来者 , 是为了弥补Node.js的一些缺陷而开发的 , 不过当前两者在兼容性上也存在一定的问题 。 Ryan直言 , “有很多人已经指出 , 摆脱Node的所有痛苦是多么令人振奋——从过时的和非标准的API到奇怪的模块加载启发式方法 。 我们也明白这些问题 , 这些都是我们团队当初创建Deno的一些主要原因 。 ”
当前 , 该团队希望能够用一种更简单的方式来与为Node.js编写的、以npm包形式发布的JavaScript进行互操作 , 于是 , 其立下了一些flag , 包括使Deno能够轻松导入npm包 , 并在未来三个月内使80-90%的npm包在Deno中工作 。
这将通过特殊的npmURLs来实现 , 示例如下:
importexpressfrom"npm:express@5";在未来三个月内 , 大多数npm模块都可以像这样作为一个依赖关系被引入 。 不会有node_modules文件夹 , 也不会有npminstall , 软件包会自动下载到Deno缓存中 。 所有的Deno工具都可以使用 , 从类型检查 , 到LSP , 再到denovendor 。
变革二:成为最快的JavaScript运行时
一直以来 , Deno团队甚至开发者圈中有很多关于运行时速度的争议 , 其认为竞争对生态系统是有好处的 。 在未来 , 该团队的目标是使Deno成为最快的JavaScript运行时 。
同时 , Ryan表示 , “我们对Deno建立在V8和Rust之上的技术栈有100%的信心 , 可以实现这个目标 。 ”