Node.js 要完了吗?

2022-11-24 0 241

Deno 1.0 正式发布之后的这些天,关于 Node.js 的探讨也不绝于耳。在SNS新闻媒体和控制技术顾问中,许多开发者都在谈及 Node.js 的宿命迈向。甚至有人论断 Node.js 将要迎就此结束,最少这一天决不会来临。我并不是甚么使徒,但在责任编辑中就要与我们撷取一些观点。责任编辑主要试著回答“Node.js 是否要完”那个问题。就要向我们说明,为甚么那时我们无须在乎那些对 Node.js 宿命的乐观预估,即使这种预估绝非子虚乌有。

责任编辑起初正式发布于 Geeky Hakcer 博客,经原作许可由 InfoQ 英文站译者并撷取。

结语

每每一类捷伊词汇或控制技术问世时,立刻就会有许多人谈及它的就此结束。不信?只需关上谷歌并输出:

(就行了选一类词汇或控制技术)忽然搞砸了吗?

无论你输出的是何种控制技术都可以搜出来一堆该文来,其中许多毫无疑问写的就是废弃物。即使是 Kubernetes 等等的新控制技术也不能幸免于难,Node.js 自然也不值得一提。但前段时间引爆“Node.js 要完”那个热门话题的是 Deno 1.0 版的正式发布。

如果你还不晓得甚么是 Deno,请继续写作下四节内容。这样你就会晓得那时弥漫着的忧虑焦虑是何来的了。

甚么是 Deno?

Deno 是由 Node.js 创建人 Ryan Dahl 编写的 Javascript 运转时。它的英文名字是“Node”referring的表音文字

那个项目是 Dahl 在 2018 年的演说“我对 Node.js 感到痛心的Gesse”中宣布的。较之以 C/C++ 编写的 Node.js 来说,Deno 是用 Rust 编写的。

在编写责任编辑时,Deno 只有一个继续执行文档,填充后的大小不一约为 15MB。

Node.js 要完了吗?

很漂亮的 Deno

此外,它没有类似于 NPM 的或独立的内部包命令行。它的包管理是内置的。

Deno 运转在沙盒模式下(意味着无法直接访问文档、网络和其他 IO),因此任何权限都需要显式授予才行。

对于 TypeScript 爱好者的一个好消息是,Deno 默认支持 TS。

为甚么要探讨 Node.js 的消亡?

之所以社区突然开始认定 Node.js 要完,主要是因为 Deno 的 1.0 版已于 2020 年 5 月 13 日正式正式发布。虽然那个项目已经开发了两年多时间,但那个正式版在SNS新闻媒体中引发了 Node 开发者的忧虑。

不用说,Deno 和 Node.js 之间有许多区别。而且 Deno 不一定是 Node.js 的替代品(目前为止是这样),但无论怎样许多人都感到惊慌失措。我对他们恐惧的原因归了一下类,并分别做了探讨。

相同的创造者

造成那时这种局面的一大因素是两种产品有着相同的创造者。而且许多人认为 Ryan Dahl 不会再在 Node 上浪费时间了。于是乎,Node.js 要完。

那个假设看似有理,其实大错特错。Node.js 拥有一个庞大的社区,比其他许多社区都大得多。所以这并不是甚么个人项目。

有人在反驳时将 Dahl 对 Node.js 的意义和 Linus Torvalds 对 Linux 的意义做了类比。我要说的是,这根本不是正确的对比。

首先,Dahl 自 2012 年以来就没再参与 Node.js 的开发了。但在过去的 30 年来,Torvalds 一直在以某种形式参与 Linux 的相关工作。

其次,即使是 Torvalds 离开了 Linux 的内核社区,也不能说 Linux 就会搞砸。而且也不要把 Torvalds 的退出与 Linux 社区在 2018 年 9 月的混乱局面划等号。2018 年的那次混乱是一桩原因复杂的黑暗事件,其中只有一部分和 Torvalds 的退出有关系。

最后,Torvalds 还创建了 Git,但并未参与其维护工作。他把 Git 全盘交了出去,可是 Git 搞砸了吗?

Node.js 社区是一片墓地,遍布着没人维护的库

众所周知,Node.js 社区是无人维护的库的墓地。不夸张地说,社区中每天问世或死亡的库的数量超过了每个人的细胞数量。

开源社区每隔三两天就会问世一个捷伊框架,新框架或许会风骚一时,然后突然就没人维护了。就行了搜一下,你就能在 GitHub 中找到几十个 Star 数众多但没人维护的项目。

可能有人会说,如果这就是社区中的日常,那么我们如何断定 Node.js 就不会遭遇同样的宿命呢?

答案是不好说。Node.js 的宿命取决于社区和企业的支持。重点不在于项目筹集了多少资金,而在于它是否能得到更多的贡献和支持。如果大量使用 Node.js 的那些公司能雇用一些人为那个项目做出积极贡献,那么 Node.js 几乎不可能迎末日。举个例子,Java 已经存在 25 年了。Java 之所以如此长寿,除了它可以在几乎所有设备上广泛使用的优势之外,另一个原因就是众多公司的支持。它得到的支持不仅来自于 Oracle,而且还有 Amazon、IBM 和其他许多公司。

但请不要忘记,许多使用 Node.js 的公司都是寿命短、预算紧的初创公司。我们不能指望这些公司做出多大贡献。Node.js 需要的是像 Facebook 或Google这样钱包鼓鼓的巨头的支持。

如果社区迈向分裂,和 / 或大公司不再支持 Node,那么我们就有理由担忧 Node 正走在衰落之路上了。

Deno 比 Node.js 更好

当然,这一点没有疑问。在构建 Node.js 的过程中,人们获得了丰富的经验和知识,所以 Deno 能做得更好也不奇怪。但是,要评估一项控制技术的前景不能只看它的能力。那只是其中一个因素。普及率和支持水平是更重要的因素。而且 Deno 在这些方面并无优势,因为它还很年轻。因此,Node.js 不会这么快死掉的。

但我们还可以假设最坏的情况,然后会发生甚么呢?继续看下四节

如果 Node.js 死掉了会怎样?

我调查时发现,有些人探讨 Node.js 的就此结束就好像在谈及一个人刚刚死掉一样。问题是,编程词汇或控制技术的消亡过程并不像人类的死亡那样。这种消亡不是一夜之间发生的事情。

控制技术的更新换代通常需要花费多年时间,因为公司无法在一夜之间或一个月内换掉现有的产品,然后迁移到新产品上。Node 也不值得一提。Node.js 库不能用在 Deno 中,为 Deno 开发新库是需要花时间的。另外,不要忘记专业知识的可用性。那时很少有人熟悉如何使用 Deno 来构建生产规模的产品。所有这些最少需要几年的时间。

Node.js 要完了吗?

Node 没机会了!

即使 Node 的消亡时间比预期的要早,市场也会长期需要相关的岗位。当然它不会像 COBOL 那样。但最少在接下来的 5 年中 Node 的开发者都能找到工作。这应该可以为 Node 开发者提供足够的缓冲期来转换方向。另外,由于 Deno 和 Node 都是 JS 世界的成员,因此从一个切换到另一个的过程并不会那么烦人。

结论

Node.js 最少在未来五年内不会消亡,而当下在SNS新闻媒体中关于它死期的争论毫无意义。尽管有一些关于它走下坡路的判断,但到目前为止我们还没有一个明确的结论。即使我们对 Node.js 假设最坏的情况,而对 Deno 假设最光明的未来,各家公司要切换到新控制技术上依旧需要很长的时间,而且 Deno 的库生态建立起来也需要时间。如果你忧心忡忡,或者对新控制技术充满好奇,我强烈建议你试著一下 Deno。

最后,我想声明一下,我对 Deno 没有偏见。这是一个前景光明的好项目。我写这篇该文的目的不是要探讨 Deno 的未来,而是要减轻 Node.js 开发者的压力。

作者介绍:

Kasra Madadipouya 是一位软件工程师,对软件架构和设计、简洁代码和机器学习充满热情。他很享受用 Java、Scala、Python 和 JavaScript 编程的乐趣。喜欢博客、写作、机器学习、音乐、步行和天文学。i3WM 粉丝。Linux 和免费开源软件(FOSS)的资深支持者。对 Deno 感兴趣的话,可以看一看作者最捷伊教学资料:如何使用 Deno 和 Oak 构建 REST API 。邮箱:[email protected]

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务