【編者按】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能推翻它的老朋友,實現統治世界嗎。我們在微波爐裡再抓一把爆米花,坐下來瞧瞧。
PHP贏在何處:混合內容的代碼
你正在打字,想法隨之變成你網站中的文本。你想為進程添加一個分支,根據URL的一些參數,一點if-then語句就會使它看起來漂亮。或者可能你想從資料庫中加入文本或資料。用PHP,你能開啟PHP魔法標籤在幾秒內開始編寫代碼。不需要模板——一切都是一個模板。不需要額外的檔案或者煞費苦心的體繫結構,因為可程式化邏輯能量就在你的指尖。
Node贏在何處:分離的內容
混合內容的代碼是拐杖,最終會使你受到損害。當然,在最初的兩到三次,混合HTML代碼是有趣的。但是不久,你的程式碼程式庫亂成一團。真正的程式員添加結構,從邏輯層分離出裝飾層。對新的程式員來說,代碼很容易理解清楚,便於維護。運行在Node.js的架構由這樣的程式員所建,他們知道當模型,視圖和控制器分離時,生活會變得更好。
PHP贏在何處:深的程式碼程式庫
網路充滿了PHP代碼。最受歡迎的構建網站平台(WordPress、Drupal和Joomla)都是用PHP編寫。不僅這些開源平台,大部分他們外掛程式也是用PHP編寫。網上到處有PHP代碼,它等著你去下載、修改和為你所用。
Node贏在何處:新的代碼意味著更多現代特徵
當然,網上有數以千計的開源PHP檔案,但是一些是8歲的WordPress外掛程式希望、祈禱有人下載它們。有誰願意去花費幾個小時、幾天或者是幾周的時間去倒騰那些已經好幾年沒有更新的代碼。Node.js外掛程式不僅是新的,而且用最新體系的完整知識構建而成。
PHP贏在何處:簡單(在一定程度上)
PHP中沒有太多的東西:幾個處理字串、數位變數和基本函數。它除了把資料從80連接埠移動到資料庫並返回,不會做的太多。這是應該做的。現代資料庫是個神奇的工具,它能離開重的負載。對不應該複雜工作,PHP的複雜度是適量的。
Node贏在何處:閉包和更多的複雜性
JavaScript可能會有許多把一些人逼瘋的小特質。但在大多數情況下,它是一個娛樂現代文法的現代語言,有幾個有用的特徵,比如閉包。你能容易地重新設定和拓展它,使強大的函數庫像jQuery成為可能。你能像傳遞對象一樣四處傳遞函數。為什麼限制你自己呢。
PHP贏在何處:不需要用戶端應用程式
所有的關於在瀏覽器和伺服器上使用相同的語言的討論是好的,但是如果你不需要在瀏覽器上使用任何語言呢。如果你運送HTML表單中資料呢。瀏覽器彈出,不會出現被未啟動的JavaScript造成的令人頭疼的事情和小故障,這個JavaScript試圖在瀏覽器上建立一個來自二十多個web服務調用的頁面。純粹的HTML比其他東西工作更頻繁,而PHP是最佳化去建立HTML。為何費心在瀏覽器上用JavaScript呢。在伺服器上建立所有操作,避免小手機上的小瀏覽器重載。
Node贏在何處:與HTML-fat PHP調用相對的瘦服務調用
雖然AJAX-crazy HTML5 Web應用程式有許多移動組件,他們很酷,非常有效。一旦JavaScript代碼在瀏覽器緩衝中,新資料沿著線路移動。這沒有大量的HTML標記語言,不重複地去下載整個頁面。只有資料改變了。如果你願意投入時間建立一個平滑的瀏覽器端Web應用程式,這將會有不錯的報酬。Node.js是最佳化地去傳送資料,僅僅只有資料通過Web服務。如果你的應用程式是複雜而又資料豐富的,這將是有效傳送的良好基礎。
PHP贏在何處:SQL
PHP與MySQL和它的許多變體,比如MariaDB。如果MySQL不全是正確的,還有其他的來自Oracle和Microsoft的偉大的SQL資料庫。你的代碼用很少的改變就能轉換成你的查詢。廣闊的SQL世界沒邊界。一些最穩定,成熟的代碼與SQL資料庫連接,意味著所有力量也能容易地被整合到PHP項目中。它可能不是完美幸福的家庭,但它是大的。
Node.js贏在何處:JSON
如果你必須接入SQL,Node.js的函數庫可以做到。但Node.js也有JSON,一個與許多最新NoSQL資料庫互動的通用語言。這並不是說你不能為你的PHP棧獲得JSON庫,但當使用JavaScript時有些流體可使用JSON的簡單性去處理。這是從瀏覽器到Web伺服器,再到資料庫的文法。冒號和花括弧在每處的作用相同,這節約了你的時間。
PHP贏在何處:編碼速度
對大多數開發人員,編寫PHP Web應用程式感到更快:沒有編譯器,沒有部署,沒有JAR檔案或者前置處理器——僅僅是你喜歡的編輯器和一些PHP檔案目錄。你的進度會不同,但就一起迅速確定項目而論,PHP是一個很好用的工具。
Node.js贏在何處:原始速度
編寫JavaScript代碼的過程中,當你在計算花括弧和圓括弧時,它有點難,但是編寫成功後,你的Node.js代碼可以飛。它的回調機制很巧妙,因為能幫你節約運行線程的時間。核心被建好,旨在為你做一切,這不是每個人想要的嗎。
原文連結:PHP vs. Node.js: An epic battle for developer mind share(譯者/史紅霞 責編/錢曙光)
本文為CSDN編譯整理,未經允許不得轉載,如需轉載請聯絡market#csdn.net(#換成@)