當前位置:
首頁 > 科技 > 想成為一名Web開發者?你應該學習Node.js而不是PHP

想成為一名Web開發者?你應該學習Node.js而不是PHP

接收程序員的技術早餐

作者|Andrei Neagoie

譯者|張健欣

編輯|覃雲

「PHP 是最好的語言!」這個段子曾非常流行。PHP 也曾一度是 Web 開發領域最受歡迎的語言。而 HTML5、AJAX、WebSocket 等技術所推動的 Web 2.0 變革,以及 Google 推出的 V8 引擎所帶來的 JavaScript 的巨大性能釋放,Node.js 已經勢不可擋,在 Web 2.0 時代傲視群雄。而 PHP 則逐漸式微,開發者數量不斷萎縮。想在 2018 年成為一名 Web 開發者?本文將從就業前景和技術兩個方面討論,為什麼要選擇學習 Node.js 而不是 PHP!

我經常被我的學生們問到的最常見的問題之一是,「為什麼你在課程中教授 Node.js 而不是 PHP?」 我告訴他們,「相信我,我在行業內工作」顯然不夠。因此,本篇就是我在課程中包含 Node.js 的原因,以及如果你想要成為一名開發者,你應該拋棄 PHP 的原因。儘管我用這兩種語言作為一個例子,但我會在本文中向你展示一個框架,用來決定你應該在接下來的開發生涯中學習哪些工具、編程語言、框架以及代碼庫。

作為一名開發者,你的時間和資源是有限的,你必須決定將你的時間投入到哪些語言和工具中,從而獲取最大回報。

現在,你最好問自己一個問題:我能將時間和精力投入到哪些學習上,才能在未來的開發事業中獲得知識、薪資和滿意度方面的最大凈值?

這並不意味著選擇最容易的路徑。這意味著選擇一些工具,使你能夠在接下來的許多年中保持競爭力的同時,提升你的技能,從而使你成為一名 高級開發人員。

在本文的結論部分,你會發現所有我所推薦的 2018 年的技術,如果你想要成為一名 Web 開發者的話。因此,如果你實在急不可耐,可以直接跳到本文末尾。否則,請抓住這次千載難逢的機會,開啟一段冒險之旅。

我們會在本文中使用兩種類型的分析:就業前景分析技術分析。下面就是具體內容。

Node.js vs PHP?—?就業前景分析

我們會這個分析中使用 Stackoverflow 開發者調查數據和 LinkedIn 數據。我們也將只聚焦 Web 開發相關的技術。

流行度

在排行榜中,JavaScript 連續 5 年是最常用的編程語言。Python 的使用 5 年內首次超過 PHP。那麼 Node.js 是什麼情況呢?Node.js 是一種 JavaScript 運行時環境。通俗點講,Node.js 是一種使用 JavaScript 的方式,就像你在伺服器端使用 PHP 那樣。因此,在本文中,你可以將 Node.js 當作 JavaScript。

你可以看到,Node.js 和 JavaScript 排在首位,而且明顯比 PHP 流行。

在過去 5 年中,Stackoverflow 從開發者調查中收集數據,發現 JavaScript 和 Node.js 之類的語言的流行度在增加,而像 PHP 之類的語言的使用情況在萎縮:

React 最受開發者喜愛,然而,Node.js 是開發者最想要掌握的,而且是第二受喜愛的。

薪資待遇和工作機會

考慮到擁有的開發經驗,使用下表中藍線以上語言(例如 Go、Rust 和 Clojure)的開發者的薪資相對較高,而使用藍線以下語言(例如 PHP)的開發者的薪資相對較低。表中圓圈的大小表示該語言相對於其它語言來說的使用者數量。PHP 開發者的薪資明顯更低且他們的開發經驗年限更少。

在 LinkedIn 招聘,你可以看到全世界發布的 Node.js 職位比 PHP 職位多了差不多 10,000 個。這還不算 Node.js 相對於 PHP 來說是一個 年輕得多的技術,而且 PHP 在 WordPress 中廣泛使用,而 WordPress構建了互聯網上 30% 的網站。

最終,你可以看到,各地區的技術職位的平均薪資(我沒有包含世界欄,因為 PHP 都沒有在世界欄上榜):

當然,我們在這裡不是要吐槽 PHP。我們只是通過觀察這些數值來決定選擇學習什麼。PHP 明顯比 JavaScript 和 Node.js 之類的技術排名低。

更新:截至本文發布,stackoverflow 發布了2018 年調查結果《PHP 的衰退在擴大》。

總結

PHP 人氣在下降,而 Node.js 的就業市場和人氣在增加。總之,PHP 開發人員的薪資明顯比其他開發人員低,而且差距似乎在繼續加大。

Node.js vs PHP?—?技術分析

讓我們看一看這兩種技術各自的優缺點。

Node.js 優點

非常適合那些客戶端和伺服器端需要保持實時通信的應用。類似 socket.io 之類的工具,使得構建聊天應用之類的東西非常簡單。同樣這個功能也讓 Node.js 適合那些處理物理網設備數據的應用以及單頁應用,而這種類型的應用現在非常普遍。

原生的 JSON 序列化和反序列化,與 Web 中的 AJAX 請求配合得非常好。

對具有非阻塞輸入 / 輸出的事件驅動應用非常有用(輸入 / 輸出是指一個信息處理系統與外部世界的通信。這個信息處理系統可能是計算機,而外部世界可能是一個人或者另外一個信息處理系統,例如資料庫)。

你學會了 JavaScript,你就學會了 Node.js。你不需要去學習另外一種語言,例如 PHP。這意味著,你可以花費全部精力學習和掌握 JavaScript。你將能夠用同一種語言編寫前端和後端代碼。

許多流行的客戶端框架,例如 React、Vue 和 Angular 是用 JavaScript 編寫的,而且 JavaScript 是現代瀏覽器的主流語言。當你在伺服器端使用 Node.js 時,你就可以獲得在整個應用開發棧使用同一種腳本語言的所有好處。前端和後端使用同一種語言非常易於維護:這使得所有團隊成員之間的協作更容易,因為前端和後端開發人員都使用相同的 JvaScript 數據結構、方法和語言規範。

當處理來自客戶端的大量請求時,單線程事件驅動系統非常快。

通過NPM可以獲取越來越多的客戶端和伺服器端第三方代碼庫,以及 Web 開發命令行工具。另外,大多數這些項目都託管在 GitHub 上,你可以報告一個問題,或者創建自己的代碼分支進行定製。

可以運行 JavaScript 相關工具和其它 Web 開發者相關工具的環境已經成為標準環境,包括任務執行器、壓縮工具、代碼檢查工具、格式化工具、預處理工具、打包工具和分析處理器。

許多新的 API 和 AWS Lambda 之類的服務提供原生支持。

V8 引擎的所有性能提升,我們都可以從中獲益。V8 是 Google 研發的 JavaScript 解析器,Node.js 構建在 V8 引擎之上。由於谷歌開發團隊不斷提高 V8 的性能,Node.js 免費從中獲益。

Node.js 缺點

上面提到的 NPM 包會讓你的代碼變得臃腫,這些包可能是不安全的,而且由於有太多選項,想找到一個好用的軟體包很困難(觀察下載數和 GitHub 統計數據是一種解決這個問題的方法)。

有太多使用 Node.js 和 npm 包構建伺服器的方法。這使得新入門的開發人員更難以從中挑選。

不適合那些依賴 CPU 消耗量大的代碼的伺服器。(例如,圖像處理或排序等複雜演算法)。一般來說,任何輸入 / 輸出之外的事情都可以看作是消耗 CPU 的代碼。通常,多線程伺服器環境比 Node.js 更適合這種場景(解決方案:如果需要,你可以用 C 語言編寫 CPU 密集的代碼)。

Node.js 不能利用底層系統或機器的所有核心。你必須自己寫邏輯來使用多核處理器。這可以用許多方法實現,但是這需要一點額外的工作(當你能夠最大化系統的 CPU 利用率時,這就會成為一個優勢)。

Node.js 總結

Node.js 非常適合那些並發連接數比較多的應用,每一個請求只需要很少的 CPU 時鐘周期。這使它非常適合目前互聯網上的許多應用,例如單頁應用應用和實時應用。

使用 JavaScript 內置的非同步處理,可以創建高度可伸縮的伺服器端代碼,最大化單個 CPU 的利用率和內存,並且能夠比傳統的多線程伺服器處理更多的並發請求。

Node.js 的依賴、規則和指南更少,這使得開發人員可以更自由更有創造力地按照他們的方式開發他們的應用。開發人員可以為他們的項目選擇最佳的架構、設計模式、模塊和功能,通過 NPM 從社區中獲益。

PHP 優點

由於 PHP 誕生年代久,因此有一穩健龐大的社區。

PHP 有一個功能強大的代碼庫,包含流行的網站構建平台(例如 WordPress、Joomla、Drupal)。CMS(內容管理系統),例如 WordPress,使得在幾分鐘內部署一個博客或者一個電商網站非常容易,而且允許非開發人員非常容易地進行定製。

使得用非開發工具進行安裝更容易,適合個人或者小型公司,他們不需要懂 SSH 和 Linux 伺服器。基礎託管平台提供的大量 PHP 應用(例如 cPanel)可以通過一次點擊就安裝完畢。

和其它通用用途的編程語言不一樣,PHP 是特意為 Web 設計的。PHP 提供了一種非常棒的伺服器端解決方案,而不需要擔心瀏覽器端的 JavaScript,因為所有的頁面都可以輕易由伺服器端生成和渲染。如果你想要避免在客戶端傳送太多代碼,這就非常有用。Node.js 也可以這樣做,但是解決方案沒有這麼簡單。

PHP7 和 HHVM(由 facebook 支持)開發提高了 PHP 的性能。

PHP 缺點

PHP 只用於後端。這意味著,如果你想要做客戶端相關的工作或者被認為是一名全棧開發者,你還是需要學習 JavaScript。

使用 PHP,伺服器端重渲染和大量訪問伺服器的請求來生成和渲染頁面,對於單頁應用來說,並不是一個好的選擇。

每個活躍的客戶端消耗一個伺服器進程。不適合擁有很多客戶端連接的 App。

與 Node.js 相比,新的 API 和 AWS Lambda 之類的服務對於 PHP 的原生支持有限。

它遵循經典的客戶端 - 伺服器模型,其中每個頁面都初始化應用、資料庫連接和 HTML 渲染。這使得當你導航一個網站時,PHP 比 Node.js 應用要慢。Node.js 應用一直運行,只需要初始化一次。因此,隨著 HTML5、AJAX 和 WebSocket 等 Web 技術的出現,Node.js 更適合新的 Web 發展方向。

PHP 總結

PHP 簡單易學,圍繞它有一個龐大的社區。對於標準化的博客或新聞站點方案來說,PHP 是一個不錯的選擇。它能夠藉助於最流行的 CMS(內容管理系統)——WordPress 的力量。WordPress 使你能夠無需編寫太多代碼,就可以定製博客。然而,在這種情況下,更簡單導致質量不怎麼樣。一項技術越容易學習,人們進入該領域也就越容易,然後就增加了人才供應,你的服務的收費也就更低。

結 論

隨著 WordPress 的普及,PHP 是 Web 1.0 時代最頂尖的語言之一。Node.js 在 2009 年發布,而且技術上來講並不是一種語言,而是 JavaScript 的一種運行時環境。Node.js 是新一代 Web 開發的佼佼者,在 Web 2.0 時代遇到的越來越多的基於事件的、數據驅動的、I/O 密集的應用,更適合用它來構建。

特別是,Node.js 基於事件的非同步架構,使得它非常適合實時應用,例如消息和協作應用。在這些應用中,會發生大量並發請求,並且客戶端和伺服器之間會有大量前後端交互。沒有 WordPress 就活不成?Node.js 有它自己非常棒的 CMS——Keystone.js。

總是需要有所取捨。從來不會有一種技術,你學了之後就能解決所有的難題並且不會過時。我們所能做的就是分析我們的選項,然後挑選出投資回報最好的一個。看看上面所講的工作前景分析和技術分析,我們可以看出一個明顯的贏家。

儘管所有技術用它們特定的方式使用都非常棒,但我們生活在一個信息如此豐富的世界,因此我們必須對我們可以集中精力並深入學習的話題數量進行限制。

在我的課程中,我教授一些這個領域的職業生涯相關的方法論,以及像 Facebook、Netflix、Google 和 Amazon 之類的一些大公司所使用的工具。如果你想要在 2018 年成為一名全棧 Web 開發者,我建議你學習:

HTML5

CSS3

Javascript

React.js

Node.js + Express.js

PostgreSQL

以及其它一些技術…

圍繞技術的討論應該有來自雙方的意見,我建議你讀一讀評論。記住,總是存在權衡取捨,而你在工作中使用什麼工具最終取決於你自己。我們所能做的就是了解我們的選擇項,而不是盲目跟風。最後,願意考慮與你自己不同的意見。

英文原文:

https://hackernoon.com/want-to-be-a-web-developer-learn-node-js-not-php-dc298154fafd


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

極簡編程語言史,在很久很久以前……
江湖救急,換對姿勢比《頸椎病康復指南》更有效

TAG:InfoQ |