在 Node 的幫助下,橫跨多平臺的 JavaScript 已經贏了

發表於2018-01-14

編者按:很多人都在尋找一個能夠統一程式語言江湖的“老大哥”,戰火也重來沒有停止過。Jonny Asmarhackernoon上發表了一篇文章指出,因為Node的存在,JavaScript具備了多功能性,已經有了坐穩“頭把交椅”的勢頭。文章由36氪編譯。wslvdvpm9cjnbp0u.jpg!1200

作者寫在前面的話:這篇文章已經引起了大量的反對,因為很多人並不認為JavaScript是程式語言中的勝利者。

儘管我承認,我的標題可能會引起爭議,可能會更加讓人有點選慾望。但我還是想強調,這篇文章並不是說JS是“最好”的語言。

我只是在文章中簡單地描述了它所覆蓋的領域,以及它能夠讓簡單的前端開發人員做更多事情的方法。

nrkch8q2cpwupi9y.jpeg!1200

在程式設計的世界裡,有一場曠日持久的戰爭。自從計算機問世以來,科學家們一直在尋找一種完美的程式語言。一個接一個的新語言被創造出來,以適應某種目的。隨著新語言的出現,也會出現新的技術時代,新的技術社群,和大量的開源貢獻。當然還會有不可避免的新的限制。自從在Java應用程式和Flash(我曾經是Flash開發者)在網際網路上長期佔據主導地位以來,我們已經看到有各種各樣的語言的湧現,各種各樣的語言毫無理由的消失,因為它們已經毫無用武之地。

世界正在朝著不同的方向前進……

那些曾經耀眼的新語言現在已經過時了,開發者越來越少,而新的語言也開始製造噪音。

到現在,JavaScript已經有幾十年的歷史了。所以,你可能會想,“它將會到何處去?”這篇文章其實不是關於“JavaScript”語言的。也不會去討論在它之前許多語言的崛起和衰落。同時,也不是關於JavaScript是如何“新鮮有光澤”的。

這篇文章是關於Node的。

真的很有必要,在一開始就區分這一點。因為Node不只是一種語言。而是一個生態系統。

這就是這篇文章的主旨。

不過也不完全是這樣。我不打算詳細講述這個生態系統是世界上有史以來最具創新性的開源合作的推動者。這是另一個的話題。

我要說明的是,Node是如何通過遍歷現代程式設計的五個關鍵領域,贏得了一場關於完美語言的古老戰爭的。

Web開發

React、Angular、Vue

React、Angular和Vue都是當今最重要的前端框架。總的來說,Facebook,Google和FOSS社群共同開發出了一種令人興奮的開發互動式使用者介面的高效工具。

因此,現在你在網路上做的所有事情都是通過一個高度互動、美觀、易用的介面來實現的。這些框架之所以能夠完全實現,完全是因為Node生態系統,你已經知道了。

你看,毫無疑問,JavaScript在前端Web開發中佔據了主導地位,但React,Angular和Vue已經將它提升到了一個新的高度。

這是使用者介面的時代。

前端開發人員不再回避構建複雜的單頁面Web應用程式和完整的軟體套件的時代。我曾經是一名Web開發人員,現在我是一名軟體開發人員。

就這樣……JavaScript贏得了Web開發。

移動開發(Mobile)

React Native

這一部分不僅只是闡述Node在Mobile領域的成功,還將提出另一個關鍵問題:

Node是跨平臺的。

這不僅僅是“哦,酷,它也能在我的手機上工作!”,也不僅僅是“哇,我的手機、平板電腦、膝上型電腦和電視都可以使用YouTube!”。

Node跨平臺的方式是最重要的。對於開發者來說,這是一個真正的跨平臺生態系統。那些真正建立起“噢,酷”和“哇”的東西的人都喜歡這個。

React Native只是Node生態系統中開發的框架的一個例子,它以前所未有的方式彌合了前端開發和移動應用開發之間的鴻溝,這是其他任何框架都沒有的。

移動開發的最大壓力一直是Web的拉動。但是,通過React Native和Node生態系統,開發者可以構建一個相容Web、iOS和Android的應用。沒有其他語言能提供這種多功能性。

就這樣……JavaScript贏得了移動開發。

桌面開發(Desktop)

Electron

當然,並不是所有的事情都發生在Web上。桌面應用程式對於我們當前這個依賴技術的世界的運營中也至關重要。

但是,既然Web現在能夠提供功能齊全的應用程式,為什麼我們還要開發桌面軟體,並對其進行不同的處理呢?

實際上,JavaScript趕上桌面端的效能需求,只是個時間問題。

所以,Electron誕生了。

當然,在桌面程式設計的時候,還有更高效的語言可以使用,但對於我們今天使用的大多數應用程式來說,JavaScript已經足夠了。

多虧了Cheng Zhao和Github,建立了一個能夠改變桌面計算面貌的框架。

Electron不僅讓桌面應用程式的開發變得更加簡單,而且也能相容Mac, Windows和Linux,它構建的應用可在這三個作業系統上面執行。

雖然Windows仍然是當今最普及的作業系統,Mac的穩定增長已經持續了15年,越來越多的開發者每天都在使用Linux。此外,像樹莓派這樣的小玩具也會讓Linux出現在許多以前只有windows或Mac的家庭中。我認為你可以理解為什麼跨作業系統的開發會具有巨大的優勢……而這僅僅是個開始。

截止到現在,Node生態系統已經能夠完全覆蓋Web開發、移動開發和桌面開發。提供了一個能夠在這些所有的平臺建立相同使用者介面的技能組合。

就這樣……JavaScript贏得了桌面開發。

後端開發

ExpressJS

我不想在這裡介紹NPM(節點包管理器)上提供的無數軟體包,這些包可以方便後端開發,因此,我只會提到Express sjs,有一個簡單但深刻的理由:

Node是為後端而構建的。

而且,Node生態系統中的JavaScript已經成為了一種多用途的工具,已經被用於開發自己的伺服器應用程式。在Node建立之前,JavaScript基本上只支援瀏覽器。它不需要執行復雜的伺服器端操作,如資料庫讀取、影象轉換或壓縮。但現在它可以……

而且,正如以上幾個例子一樣,這種對程式碼共享和重用顯著的簡化也產生了一些明顯的副作用。

其中一個副作用就是伺服器端渲染。

你get到了嗎?

伺服器端

渲染

這兩件事有什麼共同點?

傳統意義上來說,沒什麼。但“前端”(JavaScript)或“後端”(PHP、Java、Python、Ruby等)的開發通常是由兩個完全獨立的團隊來維護。

兩個團隊的人非常不同。

但現在不再是了!

感謝Node,我們現在能夠在使用者的瀏覽器需要渲染一件東西之前,在伺服器端組裝複雜的使用者介面。這就是為什麼現在Web如此時髦的原因。因為Node已經消除了後端和前端之間的界限。

就這樣……JavaScript贏得了後端開發。

遊戲開發

Unity 3D

我把這個放到了最後,因為它並不是真正的“Node”,而是JavaScript的東西,我想稍微寬泛一些:

JavaScript的成功不是因為它優於其他語言。它的成功是一個直接的結果,它對幾乎每個社群都能夠適應。

JavaScript開發者並非純粹主義者。

我們喜歡我們的語言(不是),版本分散、依賴於轉譯、跨平臺、前沿、不斷髮展,以及以前沒有語言的地方。

就像遊戲開發!

當Unity 3D首次推出基於JavaScript的“UnityScript”作為遊戲開發工具的時候,我當時就意識到,JavaScript將會做一些非常酷的事情。這是該公司首次進軍非Web開發領域。

這是一個明確的跡象,表明JavaScript可以做的不僅僅是開啟“飛出”選單,在頁面上調整字型大小。它可以做更多的事情,讓你給這篇文章或者一張圖片點贊。它可以處理沉浸式的跨平臺遊戲體驗。那些曾經被限制在Chrome、Firefox和Internet Exploder的開發者,突然之間也成了一名遊戲開發者。

雖然Unity最近宣佈他們將不在支援UnityScript,但我還是要說:

就這樣……JavaScript贏得了遊戲開發。

好吧,也許不是。

結語

我不知道這個征服會在什麼時候停止,但Node正在瘋狂爆發。它正在顛覆一個又一個的發展難題,為一個軟體開發的世界鋪平了道路,在這個世界裡,一種語言可以統治所有。我確實覺得我需要重申一下——以防被忽視:

在任何一個領域,JavaScript都不是最佳語言。

JavaScript的優勢在於它的多功能性。它來自開放式的社群,它採用了這種無分類、多型的指令碼語言,並將其轉變為當今最強大的開發生態系統。

如果你有不同的看法,歡迎在留言區互動。

相關文章