Nodejs和php哪個有前景未來?
Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境,而 PHP 是一門編程語言,二者的學習難度和適應場景不盡相同。時常將它們對比,是因為 PHP 和 Node.js 都是最廣泛使用的兩種服務器端技術。先出現的 PHP 與遲到的 Node.js早在 1995 年,PHP 就有了雛形,不過那時是為了制作“個人主頁”。當然,現在它有了更深層次的含義——超文本預編譯器,服務能力也遠不止博客站點,很多公司都使用過 PHP 構建大型企業級應用,比如早期的淘寶網使用的技術正是 PHP。
PHP 本是腳本語言,但是在 '.php' 擴展文件中,你可以寫任何的 CSS、HTML、Javascript 甚至是純文本。也可以說,PHP 是不純粹的腳本語言。
Node.js 首次公開是在 2009 年,比 PHP 整整晚了十年。設計的出發點,是用來創建可以在 web 瀏覽器環境之外運行純 JS 應用程序。這也意味著,玩轉 Node.js 需要對 Javascript 有一定的理解。應用領域不同對于客戶端和服務端通信少、交互不頻繁的應用,使用 PHP 更加便捷。如個人博客之類的內容管理系統(Wordpress),大都使用 PHP 構建。如果客戶端和服務端需要頻繁通信,使用Node.js
更容易發揮性能。如單頁面應用,聊天室應用,或者視頻播放應用,可以充分利用 Node.js 非阻塞的特性和 I/O事件驅動。響應速度有要求如果不顯示地使用異步編程方式書寫 PHP 代碼,PHP 默認是同步執行的,僅當上一行代碼執行完成后,下一行代碼才能執行。如果中間出現消耗時間長的業務邏輯,整個執行時間是累加計算的。
Node.js 代碼天生是異步執行的,在多核 CPU 的服務器中,能“同時”執行多行代碼,而不必等待上一行代碼的執行結果。因此,使用 Node.js 往往比 PHP 有更加好的響應速度。當然,你也可以讓Node.js
以同步方式運行,只需要 async、await 關鍵字標識即可。相對應地,讓 PHP 代碼異步執行,可是要復雜很多。技術棧PHP 在領域定位上屬于后端,而 Node.js 確不是那么明確,雖然 Node.js 使用的語言是 Javascript,但是大多數人認為它屬于后端,不同的定位會導致技術棧差別很大。使用 PHP 開發時,程序員經常在不同語言之間切換,常見的搭配組合——LAMP,即Linux,Apache HTTP Server,MySQL 和 PHP。也就是說 PHP 開發者需要對上面這幾個技術棧有所涉獵。Node.js 開發則只需要精通 JavaScript,常見的搭配組合——MEAN,即MongoDB,Express.js,AngularJS 和 Node.js。其中,AngularJS 還可以是 React 或者 Vue,總之,需要對 JavaScript 有廣而深的理解。甚至有言論稱:Node.js 在網站方面相當于一個可編程的 Apache 服務器。在數據庫方面,PHP 最常搭配 MySQL 這樣的傳統關系型數據庫,在業界的解決方案最為成熟。而 Node.js 的最佳合作伙伴是 NoSQL,在業界使用 Node + MongoDB 的解決方案最為常見。優劣得所每一項技術存在即是合理的,PHP 發展這么多年,成熟度不言而喻,經歷過各大公司的廣泛采用,并且如今還有大量基于 Wordpress 的網站在運行,短時間不可能被歷史淘汰。不成熟的程序員是見異思遷的,只考慮技術問題。市場是理性的,考慮語言的生態,部署難易,解決方案成熟度,招聘成本等因素。在前后端分離的大背景下,選定一個方向對于新入行的程序員也是一種引導。要是選定了大前端,Node.js 是避不開的技術。真正讓 Node.js 成為一個龐大生態的,反而是 npm 的出現,可以說,Node.js 與 npm 是相互成就,二者要是各自發展,反而可能都是不溫不火的狀態。
在業務面前,技術或者語言只是工具,Node.js 也好,PHP 也罷,很多設計思想是統一的。當掌握了一門編程語言,會發現很容易觸類旁通,那時也不會糾結到底學習哪門技術了。