服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

社区精选|2年过去了,有谁还记得曾想取代Node.js的他?

日期: 来源:SegmentFault思否收集编辑:卡颂

今天小编为大家带来的是社区作者 卡颂 的文章,让我们一起来回忆Deno.




大家好,我卡颂。

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中,他也明确表示:

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的迭代速度可以说是非常快了。

  • 应用框架
比如受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么?
如果你要写个小脚本或者搞个小项目,相比于Node,Deno的开发体验直接拉满。而且白嫖Deno Deploy不香么?

  • 还有什么推荐Deno的理由么?
有,你看看隔壁Go那凸眼睛火腿肠。再看看Deno的小恐龙敲可爱有木有~



点击左下角阅读原文,到 SegmentFault 思否社区 和文章作者展开更多互动和交流,“公众号后台“回复“ 入群 ”即可加入我们的技术交流群,收获更多的技术文章~

- END -


相关阅读

  • 智能家居大百科|智能家居的专业术语

  • 点击上方“蓝字”,关注更多精彩在信息泛滥的时代,想要获得各类信息,几乎都能0成本搜索获取,但在这个搜索的过程中所耗费的时间与精力是非常多的。为此,零狐特地以“智能家居大百
  • 智能家居大百科二|智能家居起源与运用

  • 点击上方“蓝字”,关注更多精彩据申万宏源测算,2022年全屋智能市场规模将达到215亿元,2025年则有望突破500亿元,对智能家居行业贡献将超过15%。智能家居市场正在飞速发展,它是如
  • 用人经理使用的报告,不培训即可懂

  • 北森的测评新品「关键岗位计算机自适应测评」自发布后,受到了市场的广泛关注。除了其本身具备的先进技术,切实解决了企业一直以来关注的痛点,具体可见[人才测评届的国货之光 |
  • 中铁十八局集团2023届校园招聘正式启动

  • 制图、编辑:王睿、王晓珏来源:集团公司党委干部部(人力资源部)审核:李慧楠、王飞辉、曾凡泓、吴东主办:中铁十八局集团党委工作部(党委宣传部、团委、企业文化部)近期热文,欢迎回顾!

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • SegmentFault 思否写作挑战赛!

  • SegmentFault 思否写作挑战赛 是思否社区新上线的系列社区活动,在 2 月 8 日 正式面向社区所有用户开启;挑战赛中包含多个可供作者选择的热门技术方向,根据挑战难度分为多个等
  • 社区精选|微服务的版本号要怎么设计?

  • 今天小编为大家带来的是社区作者 江南一点雨 的文章,让我们一起来学习设计微服务的版本号。今天我们来聊一下微服务项目中的版本号要怎么设计。小伙伴们平时看到的项目版本号