首頁  >  文章  >  後端開發  >  PHP對戰Nodejs:一場關於開發者喜好的史詩級戰役

PHP對戰Nodejs:一場關於開發者喜好的史詩級戰役

WBOY
WBOY原創
2016-08-08 09:22:29732瀏覽

PHP對戰Nodejs:一場關於開發者喜好的史詩級戰役

整個故事正如好萊塢大片的經典劇情走向:兩位昔日好友如今分道揚鑣,甚至被迫陷入了你死我活的鬥爭當中。剛開始的分歧並不嚴重,無非是一位老友對於另一位夥伴長久以來佔據、但又絕口不提的業務領域產生了點興趣。而在現實版的這場程式語言決鬥大電影中,Node.js成了那位成了好兄弟反目成仇的導火索,並由此引發一場勢均力敵、旗鼓相當的大戰:PHP與JavaScript,雙方曾一度攜手統治整個網路世界,但如今卻為了爭取開發人員的支持而向對方痛下殺手。

遙想當年,合作關係總是簡單而純粹。那時候JavaScript負責處理瀏覽器上的細枝末節,而PHP則管理著存在於連接埠80與MySQL之間的全部伺服器端任務。當時雙方保持著愉悅的合作心態,並持續為網路旗下的各種關鍵性零件提供支援。無論是WordPress、Drupal或Facebook,缺少了PHP、人們在網路中幾乎一分鐘都待不下去。

然而某位機靈的技術人員發現了一個驚人的秘密:JavaScript也完全能夠運行在伺服器之上。幾乎在一夜之間,我們似乎根本用不著借助PHP的力量來打造下一代伺服器堆疊了。單憑一種語言,我們已經能夠建構起Node.js以及其它各類別運行在客戶機上的框架。 「JavaScript無所不在」甚至成為一部分開發人員的工作信念。

當然,這個故事的結局還沒敲定。對於每一位到處宣揚Node.js先進性以及JavaScript便利性的開發人員來說,總有跟自己作對的傢伙存在——他們更傾向於PHP深邃的代碼基礎以及長期穩定的實際表現。那麼這位舊日支配者能夠在自己多年盤踞的伺服器端主場上擊敗挑戰方嗎? JavaScript又會無情地推翻自己的老朋友,完成自己的天下一統野心?請大家拿起手中的爆米花桶與可樂,共同觀賞這場精彩的同室操戈好戲。

PHP勝出:程式碼與內容混合

大家在輸入的過程中當然希望能將自己的思路直接轉化為網站的文本內容,同時還要為進程添加分支、一部分if-then語句以確保網站擁有漂亮的視覺效果,取決於URL中的某些參數。又或者,我們希望能夠利用單一資料庫將文字或資料加以混合。在PHP的幫助下,大家只需要打開魔法般的PHP標籤,幾秒鐘內即可開始寫程式碼。是的,不需要任何模板——因為一切都已經從屬於模板了!也用不著使用額外的文件或複雜架構,可程式邏輯的強大力量就在我們的指尖、等待著各位的調遣。

Node.js勝出:關注點劃分

將程式碼與內容加以混合像一把神奇的拐杖,雖然開始能夠很好地引導使用者、但最終卻往往變成沉重的負擔。誠然,將程式碼與HTML混合在一起確實相當有趣——至少前幾次體驗時是如此。但很多我們的程式碼庫就會變成一大堆邏輯互相雜糅的亂麻。真正的程式設計師會在其中加入結構,並把修飾層從邏輯層當中分割出來。很明顯,新手開發人員能夠藉此對專案有更清晰的認識,也更容易完成後續維護工作。運行在Node.js之上的各類框架正是由這樣一群程式設計師所打造,他們很清楚當模型、視圖以及控制器被明確劃分之後,生活會變得更加美好。

PHP勝出:深邃的程式碼庫

整個網路世界充斥著大量PHP程式碼。用來建立網站的各類主流平台(包括WordPress、Drupal以及Joomla等)都是由PHP語言所寫就。除了這些平台之外,大部分相關外掛程式同樣以開源程式碼的形式存在。總而言之,PHP程式碼可謂唾手可得,等待著大家對其進行下載、修改並根據需要靈活運用。

Node勝出:新生程式碼意味著現代功能

不可否認,成千上萬的開源PHP檔案確實能幫助大家更輕鬆地完成專案開發,但其中也有不少已達八歲高齡的WordPress外掛程式等待並盼望開發人員將其下載並加以運用。誰願意用幾小時、幾天甚至幾個禮拜時間對這些多年未曾更新的程式碼進行調試?至少我不願意。 Node.js外掛不僅更年輕,也享受了最新架構方案所帶來的種種便利。開發這部分程式碼的程式設計師們非常清楚,現代Web應用程式應為客戶端引入更多智慧化元素。

PHP勝出:便利性(或多或少吧)

PHP語言在使用過程中並沒有太多可說的:幾個變數再加上由字串與數字構成的基本函數就是它的一切。這是一套非常專注的解決方案,用戶所期望的只是利用它將資料由連接埠80移動至資料庫及後端當中。 PHP沒有太大的野心,能好好完成這項任務就是它的天職。現代資料庫不啻為一類奇蹟般的工具,因此我們大可以將各類沉重的負載交給它負責處理。 PHP是一種複雜程度適中的處理手段,我們根本沒必要刻意讓它變得難以使用。

Node勝出:閉包複雜性等

JavaScript使用中的一些小彆扭可能會讓某些開發人員抓狂,但總體而言這是一套現代程式語言、其中包含大量現代化語法加上以閉包為代表的一系列實用特性。大家可以輕鬆重新配置與擴展,從而使jQuery等強大的函式庫成為可能。我們用不著為物件之類的功能而心煩。為什麼要跟自己過不去呢?

PHP勝出:不需要客戶端應用

大家都說,如果能在瀏覽器以及伺服器上使用同一種語言,那麼實際效果肯定是最好的。但如果我們根本用不著在瀏覽器上使用任何語言,結果豈不是更理想?如果我們能夠直接以HTML格式實現資料輸出呢?瀏覽器能夠直接接納這些數據,而且用不著忍受JavaScript線程嘗試利用幾十次Web服務呼叫在瀏覽器上創建頁面所引發的各類麻煩與故障。純HTML往往比其它形式擁有更出色的運行效果,而PHP恰恰針對此類創建任務作出了全面優化。為什麼要費心把JavaScript引進瀏覽器當中?在伺服器上建置一切,並儘量避免把過於繁重的任務交給小型手機上的小瀏覽器打理,這才是正確的解決想法。

Node勝出:服務調用比臃腫的PHP HTML調用更為精簡

儘管AJAX常常將大量活動部件塞進HTML 5 Web當中,但它們確實很酷實效優勢。一旦JavaScript程式碼進入瀏覽器緩存,需要在網路線路間往來傳輸的就只剩下新資料了。在這裡我們不需要面對大量的HTML標記,而且無需重複下載整個頁面內容。只有其中的數據會改變。如果大家願意花點時間來創建一款精緻的Web應用程序,那麼它絕對能為各位帶來理想的回報。 Node.js針對資料交付機製做出了深入最佳化,資料只需要提供給Web服務。如果大家的應用程式非常複雜且充斥著大量數據,那麼Node.js無疑為資訊的有效傳遞建立起良好的基礎。

PHP勝出:SQL

PHP的設計想法本身就考慮到了與MySQL及其多種變體——例如MariaDB——的共存協作需求。如果MySQL不足以應付大家的實際需求,那麼還有更多來自甲骨文及微軟的其它卓越SQL資料庫可供我們選擇。我們的程式碼能夠在經過簡單的發動下轉換為查詢指令。廣闊的SQL世界可謂一望無際,且其疆域仍在不斷拓展當中。相當一部分穩定性最出色、開發水準最高的程式碼都會與SQL資料庫對接,這意味著所有這些強大的能力最終將能輕鬆整合到PHP專案之內。也許整套生態系還稱不上完美和諧的家族,但其可觀的規模卻絕對不容否認。

Node.js勝出:JSON

如果大家必須接入SQL,那麼Node.js也提供相關程式庫來完成這項任務。但除此之外,Node.js還能與JSON互通,這套通用方案能夠與許多最新NoSQL資料庫互動。這並不是說我們沒辦法在自己的PHP堆疊中獲得JSON庫,但在將JSON與JavaScript配合使用時、往往能夠帶來簡單便捷的任務處理流程。透過這種方式,我們能夠保證從瀏覽器到Web伺服器再到資料庫全部使用同一種語法,其中冒號與括號的使用方式及作用完全相同。這將有助於大家在節省開發時間之餘,並大幅降低程式碼編寫時的挫折感。

PHP勝出:編碼速度

對於大部分開發人員而言,利用PHP編寫Web應用程式往往能夠得到更高效的編碼體驗:用不著編譯器、無需部署、更不用編譯器、無需部署、更不用編譯器提JAR文件或預處理機制-只需要利用自己最愛的編輯器以及目錄中的部分PHP文件,開發工作就能水到渠成。各位的實際開發流程或許有所不同,但說起快速搞定專案的神兵利器,PHP在這場內鬥中絕對是當仁不讓。

Node.js勝出:原始速度

如果從程式碼本身的大括號與小括號數量角度來看,編寫JavaScript程式碼的難度確實更高一些,但在開發工作結束後、Node.js程式碼的運行速度卻極為驚人。回呼機制的引入堪稱天才之舉,因為這能大大節省我們處理不同執行緒的時間。程式碼的核心建置良好且專門設計用於實現我們的實際需求。這不正是每位開發人員夢寐以求的效果麼?

英文:http://www.infoworld.com/article/2866712/php/php-vs-node-js-an-epic-battle-for-developer-mind-share.html

以上就介紹了PHP對戰Nodejs:一場關於開發者喜好的史詩級戰役,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn