多方位解析PHP vs Node.js之爭

edithfang發表於2015-01-23
以下為譯文:

這是典型好萊塢情節:分道揚鑣的兩位老朋友間的戰鬥。摩擦經常開始於一位對另一位不言而喻的領域感興趣。這部電影的程式語言版本是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
評論(2)

相關文章