新聞中心
整個(gè)故事正如好萊塢大片的經(jīng)典劇情走向:兩位昔日好友如今分道揚(yáng)鑣,甚至被迫陷入了你死我活的斗爭當(dāng)中。剛開始的分歧并不嚴(yán)重,無非是一位老友對于另一位伙伴長久以來占據(jù)、但又絕口不提的業(yè)務(wù)領(lǐng)域產(chǎn)生了點(diǎn)興趣。而在現(xiàn)實(shí)版的這場編程語言決斗大電影中,Node.js成了那位成了好兄弟反目成仇的導(dǎo)火索,并由此引發(fā)一場勢均力敵、旗鼓相當(dāng)?shù)拇髴?zhàn):PHP與JavaScript,雙方曾一度攜手統(tǒng)治整個(gè)互聯(lián)網(wǎng)世界,但如今卻為了爭奪開發(fā)人員的支持而向?qū)Ψ酵聪職⑹帧?/p>

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!專注中小微企業(yè)官網(wǎng)定制,成都網(wǎng)站制作、網(wǎng)站建設(shè),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
遙想當(dāng)年,合作關(guān)系總是簡單而純粹。那時(shí)候JavaScript負(fù)責(zé)處理瀏覽器上的細(xì)枝末節(jié),而PHP則管理著存在于端口80與MySQL之間的全部服務(wù)器端任務(wù)。當(dāng)時(shí)雙方保持著愉悅的合作心態(tài),并不斷為互聯(lián)網(wǎng)旗下的各種關(guān)鍵性部件提供支持。無論是WordPress、Drupal還是Facebook,缺少了PHP、人們在網(wǎng)絡(luò)中幾乎一分鐘也待不下去。
然而某位機(jī)靈的技術(shù)人員發(fā)現(xiàn)了一個(gè)驚人的秘密:JavaScript也完全能夠運(yùn)行在服務(wù)器之上。幾乎在一夜之間,我們似乎根本用不著借助PHP的力量來打造下一代服務(wù)器堆棧了。單憑一種語言,我們已經(jīng)能夠構(gòu)建起Node.js以及其它各類運(yùn)行在客戶機(jī)上的框架。“JavaScript無處不在”甚至成為一部分開發(fā)人員的工作信仰。
當(dāng)然,這個(gè)故事的結(jié)局還沒有敲定。對于每一位到處宣揚(yáng)Node.js先進(jìn)性以及JavaScript便捷性的開發(fā)人員來說,總有跟自己作對的家伙存在——他們更傾向于PHP深邃的代碼基礎(chǔ)以及長期穩(wěn)定的實(shí)際表現(xiàn)。那么這位舊日支配者能夠在自己多年盤踞的服務(wù)器端主場上擊潰挑戰(zhàn)方嗎?JavaScript又是否會無情地推翻自己的老朋友,完成自己的天下一統(tǒng)野心?請大家拿起手中的爆米花桶與可樂,共同觀看這場精彩紛呈的同室操戈好戲。
PHP勝出:代碼與內(nèi)容混合
大家在輸入的過程中當(dāng)然希望能將自己的思路直接轉(zhuǎn)化為網(wǎng)站的文本內(nèi)容,同時(shí)還要為進(jìn)程添加分支、一部分if-then語句以保證站點(diǎn)擁有漂亮的視覺效果,具體取決于URL中的某些參數(shù)。又或者,我們希望能夠利用單一數(shù)據(jù)庫將文本或者數(shù)據(jù)加以混合。在PHP的幫助下,大家只需要打開魔法般的PHP標(biāo)簽,幾秒之內(nèi)即可開始編寫代碼。是的,不需要任何模板——因?yàn)橐磺卸家呀?jīng)從屬于模板了!也用不著使用額外的文件或者復(fù)雜架構(gòu),可編程邏輯的強(qiáng)大力量就在我們的指尖、等待著各位的調(diào)遣。
Node.js勝出:關(guān)注點(diǎn)劃分
將代碼與內(nèi)容加以混合像一把神奇的拐杖,雖然開始能夠很好地引導(dǎo)使用者、但最終卻往往變成沉重的負(fù)擔(dān)。誠然,將代碼與HTML混合在一起確實(shí)相當(dāng)有趣——至少前幾次體驗(yàn)時(shí)是如此。但很多我們的代碼庫就會變成一大堆邏輯相互雜糅的亂麻。真正的程序員會向其中添加結(jié)構(gòu),并把修飾層從邏輯層當(dāng)中劃分出來。很明顯,新手開發(fā)人員能夠借此對項(xiàng)目擁有更清晰的認(rèn)識,也更易于完成后續(xù)維護(hù)工作。運(yùn)行在Node.js之上的各類框架正是由這樣一群程序員們所打造,他們很清楚當(dāng)模型、視圖以及控制器得到明確劃分之后,生活會變得更加美好。
PHP勝出:深邃的代碼庫
整個(gè)網(wǎng)絡(luò)世界充斥著大量PHP代碼。用于構(gòu)建網(wǎng)站的各類主流平臺(包括WordPress、Drupal以及Joomla等等)都是由PHP語言所寫就。除了這些平臺之外,大部分相關(guān)插件同樣以開源代碼的形式存在??偠灾琍HP代碼可謂唾手可得,等待著大家對其進(jìn)行下載、修改并根據(jù)需要靈活運(yùn)用。
Node勝出:新生代碼意味著現(xiàn)代功能
不可否認(rèn),成千上萬的開源PHP文件確實(shí)能幫助大家更輕松地完成項(xiàng)目開發(fā),但其中也有不少已達(dá)八歲高齡的WordPress插件等待并盼望著開發(fā)人員將其下載并加以運(yùn)用。誰愿意用幾小時(shí)、幾天甚至幾個(gè)禮拜時(shí)間對這些多年未曾更新的代碼進(jìn)行調(diào)試?至少我不愿意。Node.js插件不僅更加年輕,而且也享受到了最新架構(gòu)方案所帶來的種種便利。開發(fā)這部分代碼的程序員們非常清楚,現(xiàn)代Web應(yīng)用程序應(yīng)當(dāng)為客戶端引入更多智能化元素。
PHP勝出:便捷性(或多或少吧)
PHP語言在使用過程中并沒有太多可說的:幾種變量再加上由字符串與數(shù)字構(gòu)成的基本函數(shù)就是它的一切。這是一套非常專注的解決方案,用戶所期望的僅僅是利用它將數(shù)據(jù)由端口80移動至數(shù)據(jù)庫及后端當(dāng)中。PHP沒有太大的野心,能很好地完成這項(xiàng)任務(wù)就是它的天職?,F(xiàn)代數(shù)據(jù)庫不啻為一類奇跡般的工具,因此我們大可以將各類沉重的負(fù)載交給它負(fù)責(zé)處理。PHP是一種復(fù)雜程度適中的處理手段,我們根本沒必要刻意讓它變得難以使用。
Node勝出:閉包復(fù)雜性等
JavaScript在使用中的一些小別扭可能會令某些開發(fā)人員抓狂,但總體而言這是一套現(xiàn)代編程語言、其中包含大量現(xiàn)代化語法加上以閉包為代表的一系列實(shí)用特性。大家可以輕松對其進(jìn)行重新配置與擴(kuò)展,從而使jQuery等強(qiáng)大的庫成為可能。我們用不著為對象之類的功能而心煩。為什么要跟自己過不去呢?
PHP勝出:不需要客戶端應(yīng)用
大家都說,如果能在瀏覽器以及服務(wù)器上使用同一種語言,那么實(shí)際效果肯定是最好的。但如果我們根本用不著在瀏覽器上使用任何語言,結(jié)果豈不是更理想?如果我們能夠直接以HTML格式實(shí)現(xiàn)數(shù)據(jù)輸出呢?瀏覽器能夠直接接納這些數(shù)據(jù),而且用不著忍受JavaScript線程嘗試?yán)脦资蜽eb服務(wù)調(diào)用在瀏覽器上創(chuàng)建頁面所引發(fā)的各類麻煩與故障。純HTML往往比其它形式擁有更出色的運(yùn)行效果,而PHP恰恰針對此類創(chuàng)建任務(wù)作出了全面優(yōu)化。為什么要費(fèi)心把JavaScript引入瀏覽器當(dāng)中?在服務(wù)器上構(gòu)建一切,并盡量避免把過于繁重的任務(wù)交給小手機(jī)上的小瀏覽器打理,這才是正確的解決思路。
Node勝出:服務(wù)調(diào)用比臃腫的PHP HTML調(diào)用更為精簡
盡管AJAX常常將大量活動部件塞進(jìn)HTML 5 Web應(yīng)用當(dāng)中,但它們確實(shí)很酷——而且極具實(shí)效優(yōu)勢。一旦JavaScript代碼進(jìn)入瀏覽器緩存,需要在網(wǎng)絡(luò)線路間往來傳輸?shù)木椭皇O滦聰?shù)據(jù)了。在這里我們不需要面對成噸的HTML標(biāo)記,而且無需重復(fù)下載整個(gè)頁面內(nèi)容。只有其中的數(shù)據(jù)會發(fā)生變化。如果大家愿意花點(diǎn)時(shí)間來創(chuàng)建一款精致的Web應(yīng)用程序,那么它絕對能給各位帶來理想的回報(bào)。Node.js針對數(shù)據(jù)交付機(jī)制作出了深入優(yōu)化,而且數(shù)據(jù)只需要提供給Web服務(wù)。如果大家的應(yīng)用程序非常復(fù)雜而且充斥著大量數(shù)據(jù),那么Node.js無疑為信息的有效傳遞建立起良好的基礎(chǔ)。
PHP勝出:SQL
PHP的設(shè)計(jì)思路本身就考慮到了與MySQL及其多種變體——例如MariaDB——的共存協(xié)作需要。如果MySQL不足以應(yīng)對大家的實(shí)際需求,那么還有更多來自甲骨文及微軟的其它卓越SQL數(shù)據(jù)庫可供我們選擇。我們的代碼能夠在經(jīng)過簡單的發(fā)動下轉(zhuǎn)化為查詢指令。廣闊的SQL世界可謂一望無際,而且其疆域仍在不斷拓展當(dāng)中。相當(dāng)一部分穩(wěn)定性最出色、開發(fā)水準(zhǔn)最高的代碼都會與SQL數(shù)據(jù)庫進(jìn)行對接,這意味著所有這些強(qiáng)大的能力最終將能被輕松集成到PHP項(xiàng)目之內(nèi)。也許整套生態(tài)系統(tǒng)還稱不上完美而又和諧的家族,但其可觀的規(guī)模卻絕對不容否認(rèn)。
Node.js勝出:JSON
如果大家必須接入SQL,那么Node.js也提供相關(guān)庫來完成這項(xiàng)任務(wù)。但除此之外,Node.js還能與JSON互通,這套通用方案能夠與眾多最新NoSQL數(shù)據(jù)庫實(shí)現(xiàn)交互。這并不是說我們沒辦法在自己的PHP堆棧中獲得JSON庫,但在將JSON與JavaScript配合使用時(shí)、往往能夠帶來簡單便捷的任務(wù)處理流程。通過這種方式,我們能夠保證從瀏覽器到Web服務(wù)器再到數(shù)據(jù)庫全部使用同一種語法,其中冒號與括號的使用方式及作用完全相同。這將幫助大家在節(jié)省開發(fā)時(shí)間之余,顯著降低代碼編寫時(shí)的挫敗感。
PHP勝出:編碼速度
對于大部分開發(fā)人員而言,利用PHP編寫Web應(yīng)用程序往往能夠得到更為高效的編碼體驗(yàn):用不著編譯器、無需部署、更不用提JAR文件或者預(yù)處理機(jī)制——只需要利用自己最喜愛的編輯器以及目錄中的部分PHP文件,開發(fā)工作就能水到渠成。各位的實(shí)際開發(fā)流程也許有所不同,但說起快速搞定項(xiàng)目的神兵利器,PHP在這場內(nèi)斗中絕對是當(dāng)仁不讓。
Node.js勝出:原始速度
如果從代碼本身的大括號與小括號數(shù)量角度來看,編寫JavaScript代碼的難度確實(shí)更高一些,但在開發(fā)工作結(jié)束后、Node.js代碼的運(yùn)行速度卻極為驚人。回調(diào)機(jī)制的引入堪稱天才之舉,因?yàn)檫@能大大節(jié)約我們處理不同線程的時(shí)間。代碼的核心構(gòu)建良好而且專門設(shè)計(jì)用于實(shí)現(xiàn)我們的實(shí)際需要。這不正是每一位開發(fā)人員夢寐以求的效果么?
英文:http://www.infoworld.com/article/2866712/php/php-vs-node-js-an-epic-battle-for-developer-mind-share.html
標(biāo)題名稱:PHP對戰(zhàn)Node.js:一場關(guān)于開發(fā)者喜好的史詩級戰(zhàn)役
本文來源:http://m.fisionsoft.com.cn/article/cdhiddc.html


咨詢
建站咨詢
