前幾年大家都在熱捧nodejs,nodejs效能高,前後臺同語言,節(jié)約開發(fā)資源,但是為什麼國內伺服器端語言還是以php,java為主呢? nodejs在前端工程化方面,例如gulp,webpack,各種前端工程化工具都是基於nodejs,但是nodejs在伺服器端卻沒有火起來?我明明記得前幾年大家都在討論說,nodejs寫伺服器端更有優(yōu)勢呢?
不知道阿里、PayPal 和 Uber 算不算大公司?淘寶雙十一就是建立在 Node 服務的基礎上,不算「火」?
實際上,在任何一家大廠,都不可能只有一種技術、架構、服務通吃。就像你不能簡單地說阿里是用 Java 的或 Facebook 是用 PHP 的。
不知道題主如何定義「在服務端火」。如果你指的是所有公司都把原有服務替換成 Node 那麼這是不可能的。
第一,即使現(xiàn)在出現(xiàn)一種新的全能技術,能秒殺所有其他語言,現(xiàn)有服務也不可能一夜之間都切換過去。只有可能在新的服務上應用新技術,等待新服務逐漸取代舊服務,新技術才逐漸取代舊技術。這也正是如阿里等公司在 Node 上所做的。
第二,一家公司採用??什麼技術,技術本身只是一個不那麼重要的因素,更要考慮需求和成本。一家新創(chuàng)公司,不管用什麼技術都能實現(xiàn)業(yè)務,老闆更多考慮的是人員成本、招募的難易度等等。 PHP 和Java 都有大量從業(yè)者,而國內目前最優(yōu)秀的 Node 程式設計師可能都集中在阿里等幾個大廠。
第三,好的程式設計師關注什麼技術能解決什麼問題,不是哪個語言比哪個語言好/火/流行。
第四,凡是能用 JavaScript 實現(xiàn)的,最終都會用 JavaScript 實作。
在虛擬機器層面 Node.js 基於的 v8 VM 看起來很不錯,但和 Java 的 VM 一比,差距甚遠。在伺服器領域,特別是擁有眾多 CPU 和大量記憶體的環(huán)境下,Java 的 VM 幾乎是你在地球上找到的最好的 VM。而 v8 既不能充分利用多 CPU 的效能,也不能將記憶體充分利用。你唯一能做的就是開很多個 Node.js 實例來緩解,但這進一步帶來了更多的問題。
Node.js 特別適合中小型系統(tǒng)的快速開發(fā),而??當系統(tǒng)變得複雜以後,Node.js 更適合充當 Web Gateway 的角色,以及用於前端開發(fā)。在這兩方面它擁有絕對優(yōu)勢。
nodejs一直很火紅,但是主要是創(chuàng)業(yè)公司比較喜歡。對於大型公司,人家Java什麼的架構如果使用nodejs重寫成本很好,因此幾乎不用。加上今年創(chuàng)業(yè)公司倒了一大片,因此nodejs就不怎麼火了。
加上對nodejs比較熱衷的是前端的朋友,覺得可以前後端一起使用。
而實際上,對於後端開發(fā)人員來說,怎麼選都不會使用nodejs。例如我是搞資料品質的,第1選擇永遠都是python,連java都不用,就不要說什麼nodejs了。