Node.js 要完了吗?

Deno1.0发布之后的这些天 , 关于Node.js的讨论也甚嚣尘上 。 在社交媒体和技术论坛中 , 许多开发人员都在谈论Node.js的命运走向 。 甚至有人断言Node.js即将迎来终结 , 至少这一天迟早会到来 。 我并不是什么先知 , 但在本文中我会与大家分享一些看法 。 本文主要尝试回答“Node.js是否要完”这个问题 。 我会向大家解释 , 为什么现在我们不必在意那些对Node.js命运的悲观预测 , 即便这种预测并非空穴来风 。
本文最初发布于GeekyHakcer博客 , 经原作者授权由InfoQ中文站翻译并分享 。
引言
每当一种新的语言或技术诞生时 , 马上就会有很多人谈论它的终结 。 不信?只需打开谷歌并输入:
(随便选一种语言或技术)快要完蛋了吗?
不管你输入的是哪种技术都可以搜出来一大堆文章来 , 其中很多无疑写的就是垃圾 。 就算是Kubernetes之类的新技术也不能幸免 , Node.js自然也不例外 。 但最近炒热“Node.js要完”这个话题的是Deno1.0版本的发布 。
如果你还不知道什么是Deno , 请继续阅读下一节内容 。 这样你就会知道现在弥漫的恐慌情绪是从何而来的了 。
什么是Deno?
Deno是由Node.js创建者RyanDahl编写的Javascript运行时 。 它的名字是“Node”一词的变体
这个项目是Dahl在2018年的演讲“我对Node.js感到遗憾的十件事”中宣布的 。 相比以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日正式发布 。 虽然这个项目已经开发了两年多时间 , 但这个正式版本在社交媒体中引发了Node开发人员的恐慌 。
不用说 , Deno和Node.js之间有很多区别 。 而且Deno不一定是Node.js的替代品(目前为止是这样) , 但不管怎样许多人都感到惊慌失措 。 我对他们恐惧的原因归了一下类 , 并分别做了探讨 。
相同的创造者
【Node.js 要完了吗?】造成现在这种局面的一大因素是两种产品有着相同的创造者 。 而且许多人认为RyanDahl不会再在Node上浪费时间了 。 于是乎 , Node.js要完 。
这个假设看似有理 , 其实大错特错 。 Node.js拥有一个庞大的社区 , 比其他许多社区都大得多 。 所以这并不是什么个人项目 。
有人在反驳时将Dahl对Node.js的意义和LinusTorvalds对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来构建生产规模的产品 。 所有这些至少需要几年的时间 。
Node.js 要完了吗?
文章图片
Node没机会了!
即便Node的消亡时间比预期的要早 , 市场也会长期需要相关的岗位 。 当然它不会像COBOL那样 。 但至少在接下来的5年中Node的开发人员都能找到工作 。 这应该可以为Node开发人员提供足够的缓冲期来转换方向 。 另外 , 由于Deno和Node都是JS世界的成员 , 因此从一个切换到另一个的过程并不会那么烦人 。
结论
Node.js至少在未来五年内不会消亡 , 而当下在社交媒体中关于它死期的争论毫无意义 。 尽管有一些关于它走下坡路的判断 , 但到目前为止我们还没有一个明确的结论 。 就算我们对Node.js假设最坏的情况 , 而对Deno假设最光明的未来 , 各家公司要切换到新技术上依旧需要很长的时间 , 而且Deno的库生态建立起来也需要时间 。 如果你忧心忡忡 , 或者对新技术充满好奇 , 我强烈建议你尝试一下Deno 。
最后 , 我想声明一下 , 我对Deno没有偏见 。 这是一个前景光明的好项目 。 我写这篇文章的目的不是要讨论Deno的未来 , 而是要减轻Node.js开发人员的压力 。
作者介绍:
KasraMadadipouya是一位软件工程师 , 对软件架构和设计、简洁代码和机器学习充满热情 。 他很享受用Java、Scala、Python和JavaScript编程的乐趣 。 喜欢博客、写作、机器学习、音乐、步行和天文学 。 i3WM粉丝 。 Linux和免费开源软件(FOSS)的资深支持者 。 对Deno感兴趣的话 , 可以看一看作者最新的教学资料:如何使用Deno和Oak构建RESTAPI 。 邮箱:kasra@madadipouya.com


    推荐阅读