【編者按】PHP vs Node.js之爭由來已久,前者用於動態網頁開發,後者是用來編寫高性能網絡服務器的JavaScript工具包,到底他們如何?InfoWorld測試中心的Peter Wayner日前撰文指出兩者的優勢所在,不妨一看。
以下為譯文:
這是典型好萊塢情節:分道揚镳的兩位老朋友間的戰斗。摩擦經常開始於一位對另一位不言而喻的領域感興趣。這部電影的編程語言版本是Node.js的引入將好友情節變成一場旗鼓相當的比賽。PHP和JavaScript,兩個曾經一起統治互聯網的合作伙伴現在為了開發者心中的份額開始一決雌雄。
在過去,他們的合作關系很簡單。JavaScript處理浏覽器上的小細節,PHP處理所有的存在於80端口和MySQL的服務器端任務。這個幸福的聯合不斷支持著因特網的許多關鍵部分。在WordPress、Drupal和Facebook上,人們幾乎不會離開PHP一分鐘。
但是,後來一些聰明的孩子發現他能使JavaScript運行在服務器上。突然,我們發現沒必要使用PHP構建下一代服務器棧了。一種語言就足夠建立Node.js和運行在客戶端的框架。對一些人來說,“JavaScript無處不在”變成了咒語。
當然,結局並沒有寫完。相比較與吹噓Node.js的純粹和JavaScript無處不在的簡單的程序員,還有另外的程序員,他們對深度代碼庫和了解PHP的穩定性感到滿意。怪老頭能夠擊退服務器端新貴嗎?JavaScript能推翻它的老朋友,實現統治世界嗎?我們在微波爐裡再抓一把爆米花,坐下來瞧瞧。
你正在打字,想法隨之變成你網站中的文本。你想為進程添加一個分支,根據URL的一些參數,一點if-then語句就會使它看起來漂亮。或者可能你想從數據庫中加入文本或數據。用PHP,你能打開PHP魔法標簽在幾秒內開始編寫代碼。不需要模板——一切都是一個模板。不需要額外的文件或者煞費苦心的體系結構,因為可編程邏輯能量就在你的指尖。
混合內容的代碼是拐杖,最終會使你受到損害。當然,在最初的兩到三次,混合HTML代碼是有趣的。但是不久,你的代碼庫亂成一團。真正的程序員添加結構,從邏輯層分離出裝飾層。對新的程序員來說,代碼很容易理解清楚,便於維護。運行在Node.js的框架由這樣的程序員所建,他們知道當模型,視圖和控制器分離時,生活會變得更好。
網絡充滿了PHP代碼。最受歡迎的構建網站平台(WordPress、Drupal和Joomla)都是用PHP編寫。不僅這些開源平台,大部分他們插件也是用PHP編寫。網上到處有PHP代碼,它等著你去下載、修改和為你所用。
當然,網上有數以千計的開源PHP文件,但是一些是8歲的WordPress插件希望、祈禱有人下載它們。有誰願意去花費幾個小時、幾天或者是幾周的時間去倒騰那些已經好幾年沒有更新的代碼?Node.js插件不僅是新的,而且用最新體系的完整知識構建而成。
PHP中沒有太多的東西:幾個處理字符串、數字的變量和基本函數。它除了把數據從80端口移動到數據庫並返回,不會做的太多。這是應該做的。現代數據庫是個神奇的工具,它能離開重的負載。對不應該復雜工作,PHP的復雜度是適量的。
JavaScript可能會有許多把一些人逼瘋的小特質。但在大多數情況下,它是一個娛樂現代語法的現代語言,有幾個有用的特征,比如閉包。你能容易地重新配置和拓展它,使強大的函數庫像jQuery成為可能。你能像傳遞對象一樣四處傳遞函數。為什麼限制你自己呢?
所有的關於在浏覽器和服務器上使用相同的語言的討論是好的,但是如果你不需要在浏覽器上使用任何語言呢?如果你運送HTML表單中數據呢?浏覽器彈出,不會出現被未啟動的JavaScript造成的令人頭疼的事情和小故障,這個JavaScript試圖在浏覽器上創建一個來自二十多個web服務調用的頁面。純粹的HTML比其他東西工作更頻繁,而PHP是最優化去創建HTML。為何費心在浏覽器上用JavaScript呢?在服務器上建立所有操作,避免小手機上的小浏覽器重載。
雖然AJAX-crazy HTML5 Web應用程序有許多移動部件,他們很酷,非常有效。一旦JavaScript代碼在浏覽器緩存中,新數據沿著線路移動。這沒有大量的HTML標記語言,不重復地去下載整個頁面。只有數據改變了。如果你願意投入時間創建一個平滑的浏覽器端Web應用程序,這將會有不錯的報酬。Node.js是最優化地去傳送數據,僅僅只有數據通過Web服務。如果你的應用程序是復雜而又數據豐富的,這將是有效傳送的良好基礎。
PHP與MySQL和它的許多變體,比如MariaDB。如果MySQL不全是正確的,還有其他的來自Oracle和Microsoft的偉大的SQL數據庫。你的代碼用很少的改變就能轉換成你的查詢。廣闊的SQL世界沒邊界。一些最穩定,成熟的代碼與SQL數據庫連接,意味著所有力量也能容易地被整合到PHP項目中。它可能不是完美幸福的家庭,但它是大的。
如果你必須接入SQL,Node.js的函數庫可以做到。但Node.js也有JSON,一個與許多最新NoSQL數據庫交互的通用語言。這並不是說你不能為你的PHP棧獲得JSON庫,但當使用JavaScript時有些流體可使用JSON的簡單性去處理。這是從浏覽器到Web服務器,再到數據庫的語法。冒號和花括號在每處的作用相同,這節約了你的時間。
對大多數開發者,編寫PHP Web應用程序感到更快:沒有編譯器,沒有部署,沒有JAR文件或者預處理器——僅僅是你喜歡的編輯器和一些PHP文件目錄。你的進度會不同,但就一起迅速確定項目而論,PHP是一個很好用的工具。
編寫JavaScript代碼的過程中,當你在計算花括號和圓括號時,它有點難,但是編寫成功後,你的Node.js代碼可以飛。它的回調機制很巧妙,因為能幫你節約運行線程的時間。核心被建好,旨在為你做一切,這不是每個人想要的嗎?
英文鏈接:PHP vs. Node.js: An epic battle for developer mind share
下面的內容更精彩:
Ubuntu 14.04下搭建Node.js開發環境 http://www.linuxidc.com/Linux/2014-12/110983.htm
Ubunru 12.04 下Node.js開發環境的安裝配置 http://www.linuxidc.com/Linux/2014-05/101418.htm
Node.Js入門[PDF+相關代碼] http://www.linuxidc.com/Linux/2013-06/85462.htm
Node.js開發指南 高清PDF中文版 +源碼 http://www.linuxidc.com/Linux/2014-09/106494.htm
Node.js入門開發指南中文版 http://www.linuxidc.com/Linux/2012-11/73363.htm
Node.js安裝與配置 http://www.linuxidc.com/Linux/2013-05/84836.htm
Ubuntu 編譯安裝Node.js http://www.linuxidc.com/Linux/2013-10/91321.htm
Node.js 的詳細介紹:請點這裡
Node.js 的下載地址:請點這裡