大家好,我卡颂。

22年11月14日,Deno公布了v1.28,间隔他第一个稳固版本v1.0.0公布(2020年5月13日)已过来2年。

作为Node.js的竞争者,Deno仿佛并没有达到取代前者的指标。

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

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

欢送退出人类高质量前端框架群,带飞

与Node.js的不同

同为js运行时环境DenoNode有什么不同呢?

抛开各种细枝末节,他们最大的不同在于 —— Deno凋谢放在很重的位置。

什么平台是最凋谢的呢?答案是web

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

  • 原生反对很多web API(比方fetchURLSearchParamsWeb Workers...)
  • 全局变量是与浏览器一样的window对象
  • 原生反对浏览器规范的ESM标准

那么,这些API规范凋谢有什么关系呢?这里讲个小故事。

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

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

他承受了NPM提出的package.json倡议。简略的说,Node中的require办法会去package.json中寻求如何解析模块(dependenciesdevDependencies等字段)。

起初,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包,Denourl的形式引入模块显然是更凋谢的。

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

Ryan的现实

从下面的故事也能看出,Ryan Dahl来到Node团队,创建Deno是充斥了理想主义色调的。

在为Deno预热的JS ConfEU 2018中,他也明确示意:

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

在最后的正式版本中,Deno也的确践行了本人与Node不同的格调,针对Node泛滥缺点提出了解决方案,比方:

  • 针对Node的安全性问题,增强了原生API拜访文件系统与网络的限度
  • 舍弃了package.json
  • 原生反对TS

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

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

Node问世时,Node团队只须要继续、稳固的迭代Node外围API,就会有大量的JS开发者为Node生态奉献优质第三方模块。

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

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

  • 开箱即用的工具链工具(linterformattertest-runnerbundle

再加上原生反对TS,能够说一个Deno初始我的项目就具备了一整套工程化最佳实际。

比照同为Rust编写的工具链工具Rome(迭代了2年,公布了一个linter,一个formatter)就能发现,Deno的迭代速度能够说是十分快了。

  • 利用框架

比方受koa启发的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么?

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

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

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