Node.js要完了嗎?

Deno 1.0 發佈之後的這些天,關於Node.js的討論也甚囂塵上。在社交媒體和技術論壇中,許多開發人員都在談論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”一詞的變體🙂

這個項目是Dahl在2018年的演講“我對Node.js感到遺憾的十件事”中宣佈的。相比以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日正式發佈。雖然這個項目已經開發了兩年多時間,但這個正式版本在社交媒體中引發了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來構建生產規模的產品。所有這些至少需要幾年的時間。

Node沒機會了!

即便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。郵箱:[email protected]

原文鏈接:

https://www.geekyhacker.com/2020/05/19/is-node-js-dying/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章