PHP與Node.js:一個史詩般開發者的分享

ADVERTISEMENT

ADVERTISEMENT

  【IT168 評論】兩個老朋友之間最終以戰鬥的方式分開,這是經典的好萊塢情節,通常,摩擦開始於一個人對另一個人的說話不感興趣時。在編程語言這部電影中,Node.js的引入使得朋友輕易地變成了怨恨對手:PHP和JavaScript,兩個合作夥伴曾經一起統治互聯網,但現在卻彼此分開。


  過去的合作關係很簡單。JavaScript處理瀏覽器上的細節,而PHP管理80端口和MySQL之間的所有服務器端任務。這是一個幸福的聯盟,支持互聯網的許多關鍵部分。在WordPress,Drupal和Facebook之間,人們幾乎在網絡上的每一分鍾都有PHP的參與。

  然後一些聰明的開發者發現JavaScript可以用在服務器上。突然,沒有必要使用PHP來構建服務器堆棧了。一種語言既可以構建Node.js,也是客戶端運行框架所需要的。“JavaScript無處不在”成為了一些人的口頭禪。

  從那時起,兩個平台都不斷地擴大和改進。Node.js的開發人員現在可以選擇一個不斷擴充的優秀框架集合:Express,Angular,Meteor等。列表很長,最大的問題是選擇最優秀最合適的。

  PHP也加快了速度,zippy即時編譯器提供的答案比以前更快。現在的PHP 7.0和HHVM都為Chrome和Node.js提供了相同的即時優化引擎V8。不僅如此,HHVM還有一個Hack,它對諸如lambda,泛型和集合等複雜編程特性提供完全支持。

  有人稱讚Node.js和JavaScript,也有人對PHP的代碼基礎和穩定性感到滿意。JavaScript還會和它的老朋友一起實現統治世界嗎?

  PHP特點:混合代碼

  如果你想添加一個分支,一個if-then語句就可以,看起來也很漂亮。或者也許你想混合文本或數據庫中的數據。使用PHP,打開PHP標簽,幾秒鍾就可以開始編寫代碼。不需要模板,因為一切都是模板!不需要額外的文件或精心設計的架構,隻需要你的指尖編程。

  Node特點:代碼分離

  混合代碼可能最終不是什麼好事。雖然,這件事很有趣,但很快你的代碼就會變的邏輯混亂。真正的程序員會添加結構並將基礎層與邏輯層分離。這使代碼對新程序員來說更加清晰,易於理解和維護。在Node.js上運行的框架由程序員構建,程序員知道模型,視圖和控製器分開是最好的。

  PHP特點:深度代碼庫

  網絡中充滿了PHP代碼。用於構建網站(WordPress,Drupal,Joomla)的最流行的平台是用PHP編寫的。不僅平台是開源的,大多數的插件也是如此。PHP代碼無處不在。

ADVERTISEMENT

  Node特點:更新的代碼意味著更現代的功能

  當然,有成千上萬偉大的開源PHP文件,但誰想要花幾個小時,幾天或幾個星期的時間研究幾年沒有更新的代碼呢?Node.js插件不僅更新,而且是建立在最新的架構方法上的。它們由程序員構建,程序員知道現代網絡應用程序應將大部分智能推送給客戶端。

  PHP特點:簡單(排序)

  PHP沒有太多的東西:一些變量和基本的函數,用於編譯字符串和數字。除了將數據從80端口移動到數據庫和回來之外做的不多,PHP是一個不複雜的工作所需的。

  Node特點:複雜的閉包

  JavaScript可能有許多小的特性,但在大多數情況下,它是一種現代語言,運行現代語法和一些有用的功能,如閉包。你可以很容易地重新配置和擴展它,使強大的庫比如jQuery成為可能,你可以傳遞類似對象的函數。

  PHP特點:新代碼正在建立

  如果你是一個程序員,想要做的不僅僅是與數據庫交互,而是對結果進行格式化,現在你可以使用PHP做很多事情。Facebook的HHVM添加了對Hack的支持,Hack是一個完整的語言,充滿了類型注釋,泛型和lambda表達式等現代特性。使用這個會限制代碼隻運行在HHVM上。

  Node特點:幾十種語言選項

  如果PHP用戶樂意訪問Hack,他們應該考慮遷移到Node.js世界,因為許多主要語言可以交叉編譯以在JavaScript中運行,如Java,C#或Lisp和Scala,OCaml和Haskell。

  PHP特點:無需客戶端應用程序

  在瀏覽器和服務器上使用相同的語言是很好的,但如果你不需要在瀏覽器上使用任何語言怎麼辦? 如果以HTML格式發送數據怎麼辦? 純HTML比其他任何東西都更頻繁地被使用,並且PHP已經被優化以創建它,既然如此,為什麼還要在瀏覽器上使用JavaScript?

  Node特點:高效交付的基礎

ADVERTISEMENT

  如果你願意花時間創建一個漂亮的瀏覽器端網絡應用程序,Node.js經過優化,可通過Web服務提供數據。如果你的應用程序很複雜,數據豐富,這是高效交付的良好基礎。

  PHP特點:SQL

  PHP被構建為與MySQL及其許多變體(如MariaDB)共存。如果MySQL不完全正確,還有來自Oracle和Microsoft的其他SQL數據庫。代碼可以對查詢進行一些更改。 一些穩定的,開發良好的代碼將與SQL數據庫相連接,這意味著也可以輕鬆地集成到PHP項目中。

  Node.js特點:JSON

  不是說不能為PHP堆棧獲得JSON庫,但使用JavaScript時,使用JSON更簡單靈活。它是從瀏覽器到Web服務器到數據庫的一種語法。

  PHP特點:編碼速度

  對於大多數開發人員,為Web應用程序編寫PHP感覺更快:沒有編譯器,沒有部署,沒有JAR文件或預處理器,只是你最喜歡的編輯器和一些目錄中的PHP文件。當一個項目需要快速開發時,PHP是最好的工具。

  Node.js特點:原始速度

  當你算入大括號和括號時,編寫JavaScript代碼有點困難。它的核心在於精細準確。

  PHP特點:內部競爭

  HHVM團隊和Zend團隊正在努力為每個人提供快速代碼。出現了獨立的基準,每個人都將代碼推向極限,這意味著更好的性能。

  Node.js特點:融合團結

  你真的想要兩個不同的代碼庫嗎?競爭有助於發展,但碎片化很快就會出現。如果你必須花幾個星期或幾個月重寫代碼,競爭不會有什麼好處。雖然Node.js在幾年前經曆了分裂,隨著io.js的推出,Node.js的Universe已經重新統一了,它給了PHP開發人員很久以來未曾有過的語言團結。

ADVERTISEMENT