自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP對(duì)戰(zhàn)Node.js:一場(chǎng)關(guān)于開(kāi)發(fā)者喜好的史詩(shī)級(jí)戰(zhàn)役

譯文
開(kāi)發(fā) 開(kāi)發(fā)工具 前端
這是一個(gè)舊日支配者與新興崛起者間相愛(ài)相殺的故事——服務(wù)器端Web堆棧的兩位好戰(zhàn)友如何走向兵戎相見(jiàn)。

[[126980]]

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

遙想當(dāng)年,合作關(guān)系總是簡(jiǎn)單而純粹。那時(shí)候JavaScript負(fù)責(zé)處理瀏覽器上的細(xì)枝末節(jié),而PHP則管理著存在于端口80與MySQL之間的全部服務(wù)器端任務(wù)。當(dāng)時(shí)雙方保持著愉悅的合作心態(tài),并不斷為互聯(lián)網(wǎng)旗下的各種關(guān)鍵性部件提供支持。無(wú)論是WordPress、Drupal還是Facebook,缺少了PHP、人們?cè)诰W(wǎng)絡(luò)中幾乎一分鐘也待不下去。

然而某位機(jī)靈的技術(shù)人員發(fā)現(xiàn)了一個(gè)驚人的秘密:JavaScript也完全能夠運(yùn)行在服務(wù)器之上。幾乎在一夜之間,我們似乎根本用不著借助PHP的力量來(lái)打造下一代服務(wù)器堆棧了。單憑一種語(yǔ)言,我們已經(jīng)能夠構(gòu)建起Node.js以及其它各類運(yùn)行在客戶機(jī)上的框架。“JavaScript無(wú)處不在”甚至成為一部分開(kāi)發(fā)人員的工作信仰。

當(dāng)然,這個(gè)故事的結(jié)局還沒(méi)有敲定。對(duì)于每一位到處宣揚(yáng)Node.js先進(jìn)性以及JavaScript便捷性的開(kāi)發(fā)人員來(lái)說(shuō),總有跟自己作對(duì)的家伙存在——他們更傾向于PHP深邃的代碼基礎(chǔ)以及長(zhǎng)期穩(wěn)定的實(shí)際表現(xiàn)。那么這位舊日支配者能夠在自己多年盤(pán)踞的服務(wù)器端主場(chǎng)上擊潰挑戰(zhàn)方嗎?JavaScript又是否會(huì)無(wú)情地推翻自己的老朋友,完成自己的天下一統(tǒng)野心?請(qǐng)大家拿起手中的爆米花桶與可樂(lè),共同觀看這場(chǎng)精彩紛呈的同室操戈好戲。

PHP勝出:代碼與內(nèi)容混合

大家在輸入的過(guò)程中當(dāng)然希望能將自己的思路直接轉(zhuǎn)化為網(wǎng)站的文本內(nèi)容,同時(shí)還要為進(jìn)程添加分支、一部分if-then語(yǔ)句以保證站點(diǎn)擁有漂亮的視覺(jué)效果,具體取決于URL中的某些參數(shù)。又或者,我們希望能夠利用單一數(shù)據(jù)庫(kù)將文本或者數(shù)據(jù)加以混合。在PHP的幫助下,大家只需要打開(kāi)魔法般的PHP標(biāo)簽,幾秒之內(nèi)即可開(kāi)始編寫(xiě)代碼。是的,不需要任何模板——因?yàn)橐磺卸家呀?jīng)從屬于模板了!也用不著使用額外的文件或者復(fù)雜架構(gòu),可編程邏輯的強(qiáng)大力量就在我們的指尖、等待著各位的調(diào)遣。

Node.js勝出:關(guān)注點(diǎn)劃分

將代碼與內(nèi)容加以混合像一把神奇的拐杖,雖然開(kāi)始能夠很好地引導(dǎo)使用者、但最終卻往往變成沉重的負(fù)擔(dān)。誠(chéng)然,將代碼與HTML混合在一起確實(shí)相當(dāng)有趣——至少前幾次體驗(yàn)時(shí)是如此。但很多我們的代碼庫(kù)就會(huì)變成一大堆邏輯相互雜糅的亂麻。真正的程序員會(huì)向其中添加結(jié)構(gòu),并把修飾層從邏輯層當(dāng)中劃分出來(lái)。很明顯,新手開(kāi)發(fā)人員能夠借此對(duì)項(xiàng)目擁有更清晰的認(rèn)識(shí),也更易于完成后續(xù)維護(hù)工作。運(yùn)行在Node.js之上的各類框架正是由這樣一群程序員們所打造,他們很清楚當(dāng)模型、視圖以及控制器得到明確劃分之后,生活會(huì)變得更加美好。

PHP勝出:深邃的代碼庫(kù)

整個(gè)網(wǎng)絡(luò)世界充斥著大量PHP代碼。用于構(gòu)建網(wǎng)站的各類主流平臺(tái)(包括WordPress、Drupal以及Joomla等等)都是由PHP語(yǔ)言所寫(xiě)就。除了這些平臺(tái)之外,大部分相關(guān)插件同樣以開(kāi)源代碼的形式存在??偠灾?,PHP代碼可謂唾手可得,等待著大家對(duì)其進(jìn)行下載、修改并根據(jù)需要靈活運(yùn)用。

Node勝出:新生代碼意味著現(xiàn)代功能

不可否認(rèn),成千上萬(wàn)的開(kāi)源PHP文件確實(shí)能幫助大家更輕松地完成項(xiàng)目開(kāi)發(fā),但其中也有不少已達(dá)八歲高齡的WordPress插件等待并盼望著開(kāi)發(fā)人員將其下載并加以運(yùn)用。誰(shuí)愿意用幾小時(shí)、幾天甚至幾個(gè)禮拜時(shí)間對(duì)這些多年未曾更新的代碼進(jìn)行調(diào)試?至少我不愿意。Node.js插件不僅更加年輕,而且也享受到了最新架構(gòu)方案所帶來(lái)的種種便利。開(kāi)發(fā)這部分代碼的程序員們非常清楚,現(xiàn)代Web應(yīng)用程序應(yīng)當(dāng)為客戶端引入更多智能化元素。

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

PHP語(yǔ)言在使用過(guò)程中并沒(méi)有太多可說(shuō)的:幾種變量再加上由字符串與數(shù)字構(gòu)成的基本函數(shù)就是它的一切。這是一套非常專注的解決方案,用戶所期望的僅僅是利用它將數(shù)據(jù)由端口80移動(dòng)至數(shù)據(jù)庫(kù)及后端當(dāng)中。PHP沒(méi)有太大的野心,能很好地完成這項(xiàng)任務(wù)就是它的天職?,F(xiàn)代數(shù)據(jù)庫(kù)不啻為一類奇跡般的工具,因此我們大可以將各類沉重的負(fù)載交給它負(fù)責(zé)處理。PHP是一種復(fù)雜程度適中的處理手段,我們根本沒(méi)必要刻意讓它變得難以使用。

Node勝出:閉包復(fù)雜性等

JavaScript在使用中的一些小別扭可能會(huì)令某些開(kāi)發(fā)人員抓狂,但總體而言這是一套現(xiàn)代編程語(yǔ)言、其中包含大量現(xiàn)代化語(yǔ)法加上以閉包為代表的一系列實(shí)用特性。大家可以輕松對(duì)其進(jìn)行重新配置與擴(kuò)展,從而使jQuery等強(qiáng)大的庫(kù)成為可能。我們用不著為對(duì)象之類的功能而心煩。為什么要跟自己過(guò)不去呢?

PHP勝出:不需要客戶端應(yīng)用

大家都說(shuō),如果能在瀏覽器以及服務(wù)器上使用同一種語(yǔ)言,那么實(shí)際效果肯定是最好的。但如果我們根本用不著在瀏覽器上使用任何語(yǔ)言,結(jié)果豈不是更理想?如果我們能夠直接以HTML格式實(shí)現(xiàn)數(shù)據(jù)輸出呢?瀏覽器能夠直接接納這些數(shù)據(jù),而且用不著忍受JavaScript線程嘗試?yán)脦资蜽eb服務(wù)調(diào)用在瀏覽器上創(chuàng)建頁(yè)面所引發(fā)的各類麻煩與故障。純HTML往往比其它形式擁有更出色的運(yùn)行效果,而PHP恰恰針對(duì)此類創(chuàng)建任務(wù)作出了全面優(yōu)化。為什么要費(fèi)心把JavaScript引入瀏覽器當(dāng)中?在服務(wù)器上構(gòu)建一切,并盡量避免把過(guò)于繁重的任務(wù)交給小手機(jī)上的小瀏覽器打理,這才是正確的解決思路。

Node勝出:服務(wù)調(diào)用比臃腫的PHP HTML調(diào)用更為精簡(jiǎn)

盡管AJAX常常將大量活動(dòng)部件塞進(jìn)HTML 5 Web應(yīng)用當(dāng)中,但它們確實(shí)很酷——而且極具實(shí)效優(yōu)勢(shì)。一旦JavaScript代碼進(jìn)入瀏覽器緩存,需要在網(wǎng)絡(luò)線路間往來(lái)傳輸?shù)木椭皇O滦聰?shù)據(jù)了。在這里我們不需要面對(duì)成噸的HTML標(biāo)記,而且無(wú)需重復(fù)下載整個(gè)頁(yè)面內(nèi)容。只有其中的數(shù)據(jù)會(huì)發(fā)生變化。如果大家愿意花點(diǎn)時(shí)間來(lái)創(chuàng)建一款精致的Web應(yīng)用程序,那么它絕對(duì)能給各位帶來(lái)理想的回報(bào)。Node.js針對(duì)數(shù)據(jù)交付機(jī)制作出了深入優(yōu)化,而且數(shù)據(jù)只需要提供給Web服務(wù)。如果大家的應(yīng)用程序非常復(fù)雜而且充斥著大量數(shù)據(jù),那么Node.js無(wú)疑為信息的有效傳遞建立起良好的基礎(chǔ)。

PHP勝出:SQL

PHP的設(shè)計(jì)思路本身就考慮到了與MySQL及其多種變體——例如MariaDB——的共存協(xié)作需要。如果MySQL不足以應(yīng)對(duì)大家的實(shí)際需求,那么還有更多來(lái)自甲骨文及微軟的其它卓越SQL數(shù)據(jù)庫(kù)可供我們選擇。我們的代碼能夠在經(jīng)過(guò)簡(jiǎn)單的發(fā)動(dòng)下轉(zhuǎn)化為查詢指令。廣闊的SQL世界可謂一望無(wú)際,而且其疆域仍在不斷拓展當(dāng)中。相當(dāng)一部分穩(wěn)定性最出色、開(kāi)發(fā)水準(zhǔn)最高的代碼都會(huì)與SQL數(shù)據(jù)庫(kù)進(jìn)行對(duì)接,這意味著所有這些強(qiáng)大的能力最終將能被輕松集成到PHP項(xiàng)目之內(nèi)。也許整套生態(tài)系統(tǒng)還稱不上完美而又和諧的家族,但其可觀的規(guī)模卻絕對(duì)不容否認(rèn)。

Node.js勝出:JSON

如果大家必須接入SQL,那么Node.js也提供相關(guān)庫(kù)來(lái)完成這項(xiàng)任務(wù)。但除此之外,Node.js還能與JSON互通,這套通用方案能夠與眾多最新NoSQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)交互。這并不是說(shuō)我們沒(méi)辦法在自己的PHP堆棧中獲得JSON庫(kù),但在將JSON與JavaScript配合使用時(shí)、往往能夠帶來(lái)簡(jiǎn)單便捷的任務(wù)處理流程。通過(guò)這種方式,我們能夠保證從瀏覽器到Web服務(wù)器再到數(shù)據(jù)庫(kù)全部使用同一種語(yǔ)法,其中冒號(hào)與括號(hào)的使用方式及作用完全相同。這將幫助大家在節(jié)省開(kāi)發(fā)時(shí)間之余,顯著降低代碼編寫(xiě)時(shí)的挫敗感。

PHP勝出:編碼速度

對(duì)于大部分開(kāi)發(fā)人員而言,利用PHP編寫(xiě)Web應(yīng)用程序往往能夠得到更為高效的編碼體驗(yàn):用不著編譯器、無(wú)需部署、更不用提JAR文件或者預(yù)處理機(jī)制——只需要利用自己最喜愛(ài)的編輯器以及目錄中的部分PHP文件,開(kāi)發(fā)工作就能水到渠成。各位的實(shí)際開(kāi)發(fā)流程也許有所不同,但說(shuō)起快速搞定項(xiàng)目的神兵利器,PHP在這場(chǎng)內(nèi)斗中絕對(duì)是當(dāng)仁不讓。

Node.js勝出:原始速度

如果從代碼本身的大括號(hào)與小括號(hào)數(shù)量角度來(lái)看,編寫(xiě)JavaScript代碼的難度確實(shí)更高一些,但在開(kāi)發(fā)工作結(jié)束后、Node.js代碼的運(yùn)行速度卻極為驚人?;卣{(diào)機(jī)制的引入堪稱天才之舉,因?yàn)檫@能大大節(jié)約我們處理不同線程的時(shí)間。代碼的核心構(gòu)建良好而且專門(mén)設(shè)計(jì)用于實(shí)現(xiàn)我們的實(shí)際需要。這不正是每一位開(kāi)發(fā)人員夢(mèng)寐以求的效果么?

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

 

責(zé)任編輯:林師授 來(lái)源: 51CTO
相關(guān)推薦

2015-02-02 10:53:02

IT技術(shù)周刊

2015-12-24 16:33:42

2017-11-02 08:53:06

Node.jsJavaPython

2017-03-17 07:00:39

AngularReact開(kāi)發(fā)者支持率

2014-08-01 10:24:11

2012-03-01 15:55:42

2017-04-05 13:06:23

Node.jsJava開(kāi)發(fā)

2017-05-05 09:10:38

Node.jsJava開(kāi)發(fā)

2014-08-18 11:06:47

js框架Node.js

2021-03-24 09:56:34

開(kāi)發(fā)

2021-12-28 20:04:23

Node.js開(kāi)發(fā)JavaScript

2012-02-07 14:58:03

Node.js

2011-11-02 09:04:15

Node.js

2016-06-06 14:55:23

數(shù)據(jù)開(kāi)發(fā)周年慶

2015-03-10 10:59:18

Node.js開(kāi)發(fā)指南基礎(chǔ)介紹

2022-01-12 10:43:56

開(kāi)發(fā)技能代碼

2015-05-26 15:17:44

OpenStack

2012-05-02 15:56:20

PHP

2015-07-16 09:59:55

PHP Node.js討論

2016-01-21 10:58:41

Node.js開(kāi)發(fā)者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)