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。
很漂亮的 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 没机会了!
即使 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]