Node.js 要完了吗?

简介: 不管你输入的是哪种技术都可以搜出来一大堆文章来,其中很多无疑写的就是垃圾。就算是 Kubernetes 之类的新技术也不能幸免,Node.js 自然也不例外。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

引言

每当一种新的语言或技术诞生时,马上就会有很多人谈论它的终结。不信?只需打开谷歌并输入:
(随便选一种语言或技术)快要完蛋了吗?
不管你输入的是哪种技术都可以搜出来一大堆文章来,其中很多无疑写的就是垃圾。就算是 Kubernetes 之类的新技术也不能幸免,Node.js 自然也不例外。但最近炒热“Node.js 要完”这个话题的是 Deno 1.0 版本的发布。
如果你还不知道什么是 Deno,请继续阅读下一节内容。这样你就会知道现在弥漫的恐慌情绪是从何而来的了。

什么是 Deno?

Deno 是由 Node.js 创建者 Ryan Dahl 编写的 Javascript 运行时。它的名字是“Node”一词的变体🙂
这个项目是 Dahl 在 2018 年的演讲“我对 Node.js 感到遗憾的十件事”中宣布的。相比以 C/C++ 编写的 Node.js 而言,Deno 是用 Rust 编写的。

在撰写本文时,Deno 只有一个执行文件,压缩后的大小约为 15MB。

006E01A8_2CCC_4a7d_8E76_497E9AC05AD2

此外,它没有类似 NPM 的或独立的外部包管理器。它的包管理是内置的。
Deno 运行在沙盒模式下(意味着无法直接访问文件、网络和其他 IO),因此任何权限都需要显式授予才行。
对于 TypeScript 爱好者的一个好消息是,Deno 默认支持 TS。

为什么要讨论 Node.js 的消亡?

之所以社区突然开始认定 Node.js 要完,主要是因为 Deno 的 1.0 版已于 2020 年 5 月 13 日正式发布。虽然这个项目已经开发了两年多时间,但这个正式版本在社交媒体中引发了 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 或谷歌这样钱包鼓鼓的巨头的支持。

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

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

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

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

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

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

D7C3C7F4_CFDF_4d8d_A064_BD31157E0D2E

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

结论

Node.js 至少在未来五年内不会消亡,而当下在社交媒体中关于它死期的争论毫无意义。尽管有一些关于它走下坡路的判断,但到目前为止我们还没有一个明确的结论。就算我们对 Node.js 假设最坏的情况,而对 Deno 假设最光明的未来,各家公司要切换到新技术上依旧需要很长的时间,而且 Deno 的库生态建立起来也需要时间。如果你忧心忡忡,或者对新技术充满好奇,我强烈建议你尝试一下 Deno。
最后,我想声明一下,我对 Deno 没有偏见。这是一个前景光明的好项目。我写这篇文章的目的不是要讨论 Deno 的未来,而是要减轻 Node.js 开发人员的压力。

作者介绍:

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

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-05-25
本文作者: Kasra Madadipouya
本文来自:“InfoQ”,了解相关信息可以关注“InfoQ

相关文章
|
8月前
|
JavaScript 网络协议
Node.js
fs模块 文件写入 writeFile 异步写入 writeFileSync 同步写入 appendFile / appendFileSync 追加写入 createWriteStream 流式写入 文件读取 readFile 异步读取 readFileSync 同步读取 createReadStream 流式读取 文件移动与重命名 文件删除 文件夹操作 mkdir 创建文件夹 readdir 读取文件夹 rmdir 删除文件夹 查看资源状态 path模块
55 1
|
3月前
|
JavaScript 前端开发 容器
初识node.js(使用)
初识node.js(使用)
22 7
|
3月前
|
JSON JavaScript 前端开发
Node.js 的适用场景
Node.js 的适用场景
33 0
|
9月前
|
JSON 前端开发 JavaScript
Node.Js(二)
Node.Js
45 0
|
9月前
|
JavaScript 前端开发
初学Node.Js
初学Node.Js
44 0
|
10月前
|
Web App开发 JavaScript 前端开发
Node.js 是什么?
Node.js 是什么?
|
10月前
|
SQL 存储 JavaScript
【Node.js】初识Node.js
【Node.js】初识Node.js
|
11月前
|
JSON JavaScript 前端开发
Node.js Next 10
Node.js Next 10
|
缓存 运维 JavaScript
狼叔:聊聊 Node.js
前阵子我在知乎上回答了《2021前端会有什么新的变化?》,单篇33.8万的阅读量,还是不错的,说明大家非常关心前端的变化趋势,这里再与大家分享一下我对 Node.js 相关内容的看法。
狼叔:聊聊 Node.js
|
JavaScript 前端开发
Node.js的特点
作为后端JavaScript的运行平台,Node保留了前端JavaScript中些熟悉的接口,没有改写语言本身的任何特性,依旧基于作用域和原型链,区别在于它将前端中广泛应用的思想作用到了服务器端。下面我们来看看Node相对于其他语言的一些特点。
1342 0