两年过去了,谁还记得曾想取代Node.js的他?

大家好,我卡颂。

目前累计服务客户上千,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供网站设计、网站制作、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联建站始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。

22年11月14日,Deno发布了v1.28,距离他第一个稳定版本v1.0.0发布(2020年5月13日)已过去2年。

作为Node.js​的竞争者,Deno似乎并没有达到「取代前者」的目标。

甚至,他在前端社区的声量也越来越小。

那么,这两年Deno​都经历了什么,未来他会取代Node.js么?

与Node.js的不同

同为「js运行时环境」,Deno与Node有什么不同呢?

抛开各种细枝末节,他们最大的不同在于 —— Deno将「开放」放在很重的地位。

什么平台是最开放的呢?答案是web。

所以,在Deno​设计的方方面面都能看到web的影子。比如:

  • 原生支持很多web API(比如fetch、URLSearchParams、Web Workers...)。
  • 全局变量是与浏览器一样的window对象。
  • 原生支持浏览器标准的ESM规范。

那么,这些API​、标准与「开放」有什么关系呢?这里讲个小故事。

Deno​的作者「Ryan Dahl」同时也是Node的作者。

在实现Node之初,他将工作重心放在「事件驱动模型」的实现上。这时,有个「项目中引入的模块该如何解析」的问题亟待解决。

他接受了NPM​提出的package.json​建议。简单的说,Node​中的require​方法会去package.json​中寻求如何解析模块(dependencies​、devDependencies等字段)。

后来,NPM​逐渐成为Node中最流行的包管理器与事实上的标准,两者逐渐深度捆绑。

而NPM​是一家私人公司,且之后被Github​收购。Github又在微软旗下。

可以说,占领导份额的Node第三方依赖管理是受私人大公司(微软)控制的。

反观Deno​,原生采用ESM规范,最初有两种模块引入方式:

  • 从本地路径引入

比如:

import xxx from './a.ts';
  • 从远端url引入

比如:

import * as utils from "https://deno.land/std@0.166.0/io/util.ts";

相比于Node中引入一个模块就等于引入一个npm包,Deno以url的方式引入模块显然是更开放的。

毕竟,web最不缺的就是url链接了。

Ryan的理想

从上面的故事也能看出,「Ryan Dahl」离开Node​团队,创立Deno是充满了理想主义色彩的。

在为Deno预热的JS ConfEU 2018[1]中,他也明确表示:

「Deno不会和Node兼容,不这样的话开发者最终实现的还是Node模块」​

在最初的正式版本中,Deno也确实践行了自己与Node不同的风格,针对Node众多缺陷提出了解决方案,比如:

  • 针对Node的安全性问题,加强了原生API访问文件系统与网络的限制
  • 舍弃了package.json
  • 原生支持TS

这些特立独行确实引起了开发者热议,但并未达到很好的市场反响。

毕竟,Deno首个正式版发布时,Node已经问世11年了。

在Node问世时,Node团队只需要持续、稳定的迭代Node核心API,就会有大量的JS开发者为Node生态贡献优质第三方模块。

而在Deno面世时,又会有多少开发者愿意为Deno贡献第三方模块呢,用Node现成的包不香么?

于是,Deno亲自上阵,满足了开发者的一些刚需,比如:

  • 开箱即用的工具链工具(linter、formatter、test-runner、bundle)

再加上原生支持TS,可以说一个Deno初始项目就具备了一整套工程化最佳实践。

对比同为Rust编写的工具链工具Rome(迭代了2年,发布了一个linter,一个formatter)就能发现,Deno的迭代速度可以说是非常快了。

  • 应用框架

比如对标express的oak,以nobundle为卖点的全栈框架fresh。

  • 发布系统

与Deno深度整合的Deno Deploy。

这些努力似乎并没有取得预期的效果,对比Deno(蓝色)与Node(红色)的Google趋势。

Node的趋势整体走高,而Deno的走势极为平坦(只在20年5月v1.0发布时有一点起伏):

现实

今年6月,Deno​获得由红杉领投的2100w刀的A轮融资,用于发展Deno Deploy。

资本为了获得更好的回报,势必需要更大的用户基数。而Deno​最大的潜在用户群体,就是Node开发者了。

理想主义的Ryan不得不面对现实。

在最近的v1.28中,Deno​宣布已显著提高对NPM​包的兼容性,现在开发者可以在Deno​中使用超过130w个NPM包。

在这背后,Deno​做了大量的Node.js​适配工作(在Deno​中实现Node​原生API的适配层)。

曾经「替代Node.js」的目标,也逐渐变为「成为更好的Node.js」。

这2年的经历对Deno来说,就像一个初入职场的热血大学生被社会磨平棱角的过程。

总结

  • Deno凉了么?

不仅没有,而且已经发展为融资2600w刀,拥有17名员工的公司。

  • Deno​会取代Node么?

在可预见的未来,Deno​都会是「小而美」的状态。在某些细分领域逐渐蚕食Node的市场份额。

  • 我应该使用Deno么?

如果你要「写个小脚本」或者「搞个小项目」,相比于Node​,Deno​的开发体验直接拉满。而且白嫖Deno Deploy不香么?

  • 还有什么推荐Deno的理由么?

有,你看看隔壁Go​那凸眼睛火腿肠。再看看Deno的小恐龙敲可爱有木有~

参考资料

[1]JS ConfEU 2018:https://www.youtube.com/watch?v=M3BM9TB-8yA。

本文名称:两年过去了,谁还记得曾想取代Node.js的他?
分享地址:http://www.shufengxianlan.com/qtweb/news18/181918.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联