PHP與Node.js:一個(gè)史詩(shī)般開發(fā)者的分享
兩個(gè)老朋友之間最終以戰(zhàn)斗的方式分開,這是經(jīng)典的好萊塢情節(jié),通常,摩擦開 始于一個(gè)人對(duì)另一個(gè)人的說話不感興趣時(shí)。在編程語(yǔ)言這部電影中,Node.js的引入使得朋友輕易地變成了怨恨對(duì)手:PHP和JavaScript,兩個(gè) 合作伙伴曾經(jīng)一起統(tǒng)治互聯(lián)網(wǎng),但現(xiàn)在卻彼此分開。
過 去的合作關(guān)系很簡(jiǎn)單。JavaScript處理瀏覽器上的細(xì)節(jié),而PHP管理80端口和MySQL之間的所有服務(wù)器端任務(wù)。這是一個(gè)幸福的聯(lián)盟,支持互聯(lián) 網(wǎng)的許多關(guān)鍵部分。在WordPress,Drupal和Facebook之間,人們幾乎在網(wǎng)絡(luò)上的每一分鐘都有PHP的參與。
然后一些聰明的開發(fā)者發(fā)現(xiàn)JavaScript可以用在服務(wù)器上。突然,沒有必要使用PHP來構(gòu)建服務(wù)器堆棧了。一種語(yǔ)言既可以構(gòu)建Node.js,也是客戶端運(yùn)行框架所需要的?!癑avaScript無處不在”成為了一些人的口頭禪。
從那時(shí)起,兩個(gè)平臺(tái)都不斷地?cái)U(kuò)大和改進(jìn)。Node.js的開發(fā)人員現(xiàn)在可以選擇一個(gè)不斷擴(kuò)充的優(yōu)秀框架集合:Express,Angular,Meteor等。列表很長(zhǎng),最大的問題是選擇最優(yōu)秀最合適的。
PHP也加快了速度,zippy即時(shí)編譯器提供的答案比以前更快。現(xiàn)在的PHP 7.0和HHVM都為Chrome和Node.js提供了相同的即時(shí)優(yōu)化引擎V8。不僅如此,HHVM還有一個(gè)Hack,它對(duì)諸如lambda,泛型和集合等復(fù)雜編程特性提供完全支持。
有人稱贊Node.js和JavaScript,也有人對(duì)PHP的代碼基礎(chǔ)和穩(wěn)定性感到滿意。JavaScript還會(huì)和它的老朋友一起實(shí)現(xiàn)統(tǒng)治世界嗎?
PHP特點(diǎn):混合代碼
如果你想添加一個(gè)分支,一個(gè)if-then語(yǔ)句就可以,看起來也很漂亮。或者也許你想混合文本或數(shù)據(jù)庫(kù)中的數(shù)據(jù)。使用PHP,打開PHP標(biāo)簽,幾秒鐘就可以開始編寫代碼。不需要模板,因?yàn)橐磺卸际悄0澹〔恍枰~外的文件或精心設(shè)計(jì)的架構(gòu),只需要你的指尖編程。
Node特點(diǎn):代碼分離
混 合代碼可能最終不是什么好事。雖然,這件事很有趣,但很快你的代碼就會(huì)變的邏輯混亂。真正的程序員會(huì)添加結(jié)構(gòu)并將基礎(chǔ)層與邏輯層分離。這使代碼對(duì)新程序員 來說更加清晰,易于理解和維護(hù)。在Node.js上運(yùn)行的框架由程序員構(gòu)建,程序員知道模型,視圖和控制器分開是最好的。
PHP特點(diǎn):深度代碼庫(kù)
網(wǎng)絡(luò)中充滿了PHP代碼。用于構(gòu)建網(wǎng)站(WordPress,Drupal,Joomla)的最流行的平臺(tái)是用PHP編寫的。不僅平臺(tái)是開源的,大多數(shù)的插件也是如此。PHP代碼無處不在。
Node特點(diǎn):更新的代碼意味著更現(xiàn)代的功能
當(dāng)然,有成千上萬(wàn)偉大的開源PHP文件,但誰(shuí)想要花幾個(gè)小時(shí),幾天或幾個(gè)星期的時(shí)間研究幾年沒有更新的代碼呢?Node.js插件不僅更新,而且是建立在最新的架構(gòu)方法上的。它們由程序員構(gòu)建,程序員知道現(xiàn)代網(wǎng)絡(luò)應(yīng)用程序應(yīng)將大部分智能推送給客戶端。
PHP特點(diǎn):簡(jiǎn)單(排序)
PHP沒有太多的東西:一些變量和基本的函數(shù),用于編譯字符串和數(shù)字。除了將數(shù)據(jù)從80端口移動(dòng)到數(shù)據(jù)庫(kù)和回來之外做的不多,PHP是一個(gè)不復(fù)雜的工作所需的。
Node特點(diǎn):復(fù)雜的閉包
JavaScript可能有許多小的特性,但在大多數(shù)情況下,它是一種現(xiàn)代語(yǔ)言,運(yùn)行現(xiàn)代語(yǔ)法和一些有用的功能,如閉包。你可以很容易地重新配置和擴(kuò)展它,使強(qiáng)大的庫(kù)比如jQuery成為可能,你可以傳遞類似對(duì)象的函數(shù)。
PHP特點(diǎn):新代碼正在建立
如 果你是一個(gè)程序員,想要做的不僅僅是與數(shù)據(jù)庫(kù)交互,而是對(duì)結(jié)果進(jìn)行格式化,現(xiàn)在你可以使用PHP做很多事情。Facebook的HHVM添加了對(duì)Hack 的支持,Hack是一個(gè)完整的語(yǔ)言,充滿了類型注釋,泛型和lambda表達(dá)式等現(xiàn)代特性。使用這個(gè)會(huì)限制代碼只運(yùn)行在HHVM上。
Node特點(diǎn):幾十種語(yǔ)言選項(xiàng)
如果PHP用戶樂意訪問Hack,他們應(yīng)該考慮遷移到Node.js世界,因?yàn)樵S多主要語(yǔ)言可以交叉編譯以在JavaScript中運(yùn)行,如Java,C#或Lisp和Scala,OCaml和Haskell。
PHP特點(diǎn):無需客戶端應(yīng)用程序
在瀏覽器和服務(wù)器上使用相同的語(yǔ)言是很好的,但如果你不需要在瀏覽器上使用任何語(yǔ)言怎么辦? 如果以HTML格式發(fā)送數(shù)據(jù)怎么辦? 純HTML比其他任何東西都更頻繁地被使用,并且PHP已經(jīng)被優(yōu)化以創(chuàng)建它,既然如此,為什么還要在瀏覽器上使用JavaScript?
Node特點(diǎn):高效交付的基礎(chǔ)
如果你愿意花時(shí)間創(chuàng)建一個(gè)漂亮的瀏覽器端網(wǎng)絡(luò)應(yīng)用程序,Node.js經(jīng)過優(yōu)化,可通過Web服務(wù)提供數(shù)據(jù)。如果你的應(yīng)用程序很復(fù)雜,數(shù)據(jù)豐富,這是高效交付的良好基礎(chǔ)。
PHP特點(diǎn):SQL
PHP 被構(gòu)建為與MySQL及其許多變體(如MariaDB)共存。如果MySQL不完全正確,還有來自O(shè)racle和Microsoft的其他SQL數(shù)據(jù)庫(kù)。 代碼可以對(duì)查詢進(jìn)行一些更改。 一些穩(wěn)定的,開發(fā)良好的代碼將與SQL數(shù)據(jù)庫(kù)相連接,這意味著也可以輕松地集成到PHP項(xiàng)目中。
Node.js特點(diǎn):JSON
不是說不能為PHP堆棧獲得JSON庫(kù),但使用JavaScript時(shí),使用JSON更簡(jiǎn)單靈活。它是從瀏覽器到Web服務(wù)器到數(shù)據(jù)庫(kù)的一種語(yǔ)法。
PHP特點(diǎn):編碼速度
對(duì)于大多數(shù)開發(fā)人員,為Web應(yīng)用程序編寫PHP感覺更快:沒有編譯器,沒有部署,沒有JAR文件或預(yù)處理器,只是你最喜歡的編輯器和一些目錄中的PHP文件。當(dāng)一個(gè)項(xiàng)目需要快速開發(fā)時(shí),PHP是最好的工具。
Node.js特點(diǎn):原始速度
當(dāng)你算入大括號(hào)和括號(hào)時(shí),編寫JavaScript代碼有點(diǎn)困難。它的核心在于精細(xì)準(zhǔn)確。
PHP特點(diǎn):內(nèi)部競(jìng)爭(zhēng)
HHVM團(tuán)隊(duì)和Zend團(tuán)隊(duì)正在努力為每個(gè)人提供快速代碼。出現(xiàn)了獨(dú)立的基準(zhǔn),每個(gè)人都將代碼推向極限,這意味著更好的性能。
Node.js特點(diǎn):融合團(tuán)結(jié)
你 真的想要兩個(gè)不同的代碼庫(kù)嗎?競(jìng)爭(zhēng)有助于發(fā)展,但碎片化很快就會(huì)出現(xiàn)。如果你必須花幾個(gè)星期或幾個(gè)月重寫代碼,競(jìng)爭(zhēng)不會(huì)有什么好處。雖然Node.js在 幾年前經(jīng)歷了分裂,隨著io.js的推出,Node.js的Universe已經(jīng)重新統(tǒng)一了,它給了PHP開發(fā)人員很久以來未曾有過的語(yǔ)言團(tuán)結(jié)。
來自:http://www.techug.com/post/php-vs-node-js-3.html
相關(guān)文章:
1. .Net加密神器Eazfuscator.NET?2023.2?最新版使用教程2. jsp文件下載功能實(shí)現(xiàn)代碼3. 如何在jsp界面中插入圖片4. ASP動(dòng)態(tài)網(wǎng)頁(yè)制作技術(shù)經(jīng)驗(yàn)分享5. 詳解瀏覽器的緩存機(jī)制6. .Net Core和RabbitMQ限制循環(huán)消費(fèi)的方法7. Xml簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理8. phpstudy apache開啟ssi使用詳解9. jsp實(shí)現(xiàn)登錄驗(yàn)證的過濾器10. JSP之表單提交get和post的區(qū)別詳解及實(shí)例
