亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

簡單談談PHP vs Node.js

2024-09-04 11:43:29
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了簡單談談PHP vs Node.js,需要的朋友可以參考下

網絡正在處于一個日新月異的發展時代,服務器端開發人員在選擇語言的時候非常困惑,有長期占主導地位的語言,例如C、Java和Perl,也有專注于web開發的語言,例如Ruby、Clojure和Go。只要你的項目運行良好,你的選擇就顯得沒有那么重要了。

但是如何讓這些新的web開發人員做出一個正確的選擇呢?

我不希望展開一場PHP、NodeJs兩大陣營之間的戰爭,我將會對比這兩種語言所在領域的發展狀況:

PHP

Rasmus Lerdorf在1994年創造出了PHP。它是由安裝在web服務器(Apache、Ngix)上的組件運行的。

PHP代碼可以和HTML混合到一塊。 對于初學者就能很快寫出很有價值的代碼,這并不需要太多的練習。 這讓PHP變得越來越流行, 現在全球百分之八十的服務器上都在運行著PHP。全球四分之一的網站都在用的一個內容管理系統--WordPress,就是用PHP寫的。

Node.js

Ryan Dahl在2009年創造了Node.js。它是基于Google的V8 JavaScript解釋引擎(在Chrome瀏覽器里它負責執行客戶端的JavaScript代碼)。與其它語言不同的是Node.js內置了處理網絡請求和響應的函數庫,所以你不需要單獨的服務器(Apache、Ngix)或者其他依賴。

Node.js雖然很新但是很快就獲得了極大的追捧。在很多的大公司都有在使用,例如:Microsoft,Yahoo,LinkedIn和PayPal。

我們所鐘愛的C#、Java、Ruby、Python、Perl、Erlang、C++、Go、Dart、Scala、Haskell等等,它們呢?

如果文章里邊比較了如上所有語言的各種參數,文章將會非常長,你還會讀它么?你期望一個程序員了解所有的程序開發語言嗎?這顯然是不可能的。我主要對PHP和Node.js做了比較,主要原因如下:

首先它們之間值得比較。兩者都是開放源碼,都是致力于web開發,并且都可用于相似的項目。

PHP已經發布了很久了,但是Node.js才剛剛興起,并受到越來越多的關注。難道PHP的程序員應該相信Node.js的宣傳?應該考慮轉換語言?

我了解,熱愛編程語言,自從20世紀90年代之后我就一直使用PHP和JavaScript,并且也有幾年的Node.js的經驗。除此之外我也涉獵了其他的技術,但是在這里我還不能對他們作出客觀評價。

另外,對多少語言做比較不重要,因為總會有某些地方的某些人抱怨我沒有提到他們語言。

SitePoint上的角逐

程序員會花費很多時間來提升他們自己的編程能力。一些人有編程語言之間的延伸能力,但是這些達到更高層次的人根據很多的因素來做出他們自己的選擇。從主觀方面來說,你將會推進并且捍衛你的技術決策。

SitePoint Smackdowns并沒有采取“選擇適合你自己的,朋友”這樣的觀點。我將會根據個人的經驗、要求和喜好提出建議。你可能不會同意所有的我所說的所有觀點,這并不重要,重要的是你的意見將會給其他人做出更加明智的選擇。

評估方法

下面將會對 PHP 和 Node.js 進行十個輪次的比較。每個回合都會考量可以應用到任意 web 技術的常見的開發挑戰。我們不會太深入討論細節;很少有人會關心隨機數生成器或數組排序的價值。

贏得最多回合的將會是優勝者。準備好了嗎?開始較量吧。。。。。。

第一輪:起步

創建一個“Hello World” web 頁面有多快呢?在 PHP 中:

  1. <?php 
  2.   echo 'Hello World!'
  3. ?> 

這段代碼可以放置在可以被 PHP 引擎解析的任意文件中--通常,是以 .php 為后綴的文件。在瀏覽器中輸入 URL 跳轉到文件即可。

不可否認,這不是全部。這段代碼只能運行于安裝了 PHP 的 web 服務器(PHP 有一個內置的服務器,盡管如此,最好還是使用一個更健壯的服務器)。大多數操作系統提供了服務器軟件,如 windows 上的 IIS,Mac 和 Linux 上的 Apache,盡管它們需要啟動和配置。通常使用提前構建的安裝程序,如 XAMPP或虛擬機鏡像(如 Vagrant)。一種更簡單的方式:上傳你的文件到任意的 web 主機。

對比而言,安裝 Node.js 輕而易舉。你可以 下載安裝程序 或者 使用包管理器。 接下來讓我們在 hello.js 中創建 web 頁面:

  1. var http = require('http'); 
  2. http.createServer(function (req, res) { 
  3.   res.writeHead(200, {'Content-Type''text/plain'}); 
  4.   res.end('Hello World!'); 
  5. }).listen(3000, '127.0.0.1'); 

在瀏覽器中訪問 http://127.0.0.1:3000/  之前,你需要在終端輸入 node hello.js 來啟動應用程序 。通過上面的五行代碼,我們已經創建了一個小型的 web 服務器,盡管這很令人吃驚,但是即便擁有很強客戶端 JavaScript 經驗的人也很難理解。

PHP 在概念上更簡單所以贏得本輪。稍微懂得一些 PHP 聲明的人就可以開發一些有用的東西。PHP 有更多的軟件依賴,但是 PHP 的概念對于新手來說不那么繁瑣。

懂一些 JavaScript 和開發 Node.js 應用是兩回事兒,Node.js 開發方法和大多數服務端技術不同,你需要先弄明白一些相當復雜的概念,比如關閉和回調函數。

第二輪:幫助和支持

沒有官方文檔和資源(課程,論壇,堆棧溢出)的幫助你必將舉步維艱。 PHP 在本輪輕易勝出,她有大量的指南和二十年的 Q&A。無論你想做什么,總會有人在你之前已經面對過同樣的問題。

Node.js 擁有很好的文檔,但是更加年輕,能提供的幫助較 PHP 也少。JavaScript 在市面上的時間和 PHP 一樣久,但是主要的幫助都是針對瀏覽器開發的,那基本沒啥幫助。

第三回合: 語言語法

聲明與結構是不是符合邏輯而且簡單好用?

不像一些語言跟框架,PHP 不會限制你按特定的方式編寫,具體怎么搞隨你。你可以從幾行的程序開始,然后添加些方法,進而寫一些簡單的 PHP4 模式的對象,最后編寫優雅的面向對象的 MVC 模式 PHP5+ 的應用。你的代碼開始可能比較混亂,但也能工作,而且會隨著理解的深入越寫越好。

PHP 的語法在版本間可能略有調整,但是向后兼容一般都做得很好。但不幸的是,這也導致了一個問題:PHP 很混亂。例如,怎么統計一個字符串中字符的個數?是 count?str_len? 還是 strlen?亦或 mb_strlen?PHP 有數以百記的函數,而且命名規則也也不完全一致??梢栽囋嚥徊槲臋n寫幾行代碼。

JavaScript 相對就簡單些,只有幾十個核心聲明。不過語法就經常被開發者噴了,因為它的原型化對象模型看起來平易近人,實際上卻不是。而且各種數學錯誤(0.1+0.2 != 0.3)以及類型轉換的混亂('4' + 2 == '42' 和 '4' - 2 == 2)也招致不少抱怨,但這些情況世界很少導致什么問題,多數語言都有這種借口。

PHP 有他的優點,但是這回合我判 Node.js 勝。理由如下:

JavaScript 是世界上最難理解的語言 — 但是,當哪天你頓悟以后,概念一通,就會發現其他語言都太過笨拙了。

JavaScript 代碼比 PHP 簡潔。例如,你再不需要跟 JSON 轉來轉去—— UTF-8 也不用

全棧工程師可以同時在客戶端與服務端使用 JavaScript 。大腦不需要來回切換。

深入理解 JavaScript 會讓你更想用它,但是 PHP 不是這樣。

第四輪:開發工具

兩種技術都有一些很好的編輯器,集成開發環境,調試器,驗證器和其他工具。我認為這是平局,但是這里有一些工具給 Node.js 些許優勢:NPM-包管理器。 NPM 允許你安裝和管理依賴,設置配置變量,定義腳本和其他。

PHP 的 Composer 項目受 NPM 激發,在有些方面更強。但是,PHP 在默認情況想不提供,活動庫較小,在社區的影響更小。

Grunt 和 Gulp 之類革新了開發方法的構建工具的壯大,NPM 也有一部分功勞。有時候 PHP 開發者也許想要/需要安裝 node.js,這不是倒退。

第五輪:環境

技術可以在哪使用和部署?支持哪些平臺和生態系統?網頁開發者經常需要開發一些并不完全針對網頁的應用,比如構建工具,遷移工具,數據庫轉換腳本等。

PHP 有辦法開發桌面應用和命令行工具,但是你不會使用他們。本質上,PHP 是一個服務端技術,他很擅長該領域,但是很少延伸到這之外。

若干年前,JavaScript 被認為限制很多,有一些邊緣技術,但是他的主戰場還是瀏覽器。Node.js 已經改變了這一感覺并井噴出了很多 JavaScript 項目,你可以在任何地方使用 JavaScript:瀏覽器,服務器,終端,桌面甚至嵌入式系統,這使得 JavaScript 無處不在。

第六輪:集成

開發技術很受限制,除非他們能與數據庫和驅動集成。PHP 在這方面很強,PHP 面世已經很多年,他的擴展使他能和擁有主流或冷門的 API 的服務器直接通訊。

Node.js 正在迎頭直追,但是你也許會為某些老舊,冷門的技術尋找成熟集成組件而頭疼。

第七輪:托管和部署

部署你絢麗新應用到在線網頁服務器有多容易?這是 PHP 的另一次完勝。隨機聯系某個網頁托管公司你可以找到對主要的 PHP 支持,也許還免費附送 MySQL。對于沙盒,PHP 被認為更簡單,有風險的擴展可以被禁用。

Node.js 是個不同的野獸,服務端的應用永遠運行。你需要一臺物理/虛擬/云或定制的服務器環境,最好有 root 權限,這對有些服務器來說遙不可及,特別是那些共享的服務器,你有可能讓整臺服務器宕機。

Node.js 托管將會變得簡單,但是我認為他永遠沒法像 FTP 上傳一些 PHP 文件那么方便。

第八輪:性能

PHP 很勤快,有很多項目跟選項可以使它跑得更快。即使那些對性能要求很嚴苛的 PHP 開發者也幾乎不會擔心速度問題, 但是 Node.js 性能通常更好一些。 當然,性能很大程度上決定于開發團隊的經驗以及是否上心, 但是 Node.js 還是有如下幾條優勢的:

更少的依賴

所有對 PHP 應用的請求都必須經過一個 WEB 服務器的路由,來啟動 PHP 的解釋器運行 PHP 代碼。Node.js 不需要這些依賴, 而且你基本一定會使用一個帶服務器的框架,像 Express,他很輕量,很好的扮演你應用的一部分。

更小更快的解釋器

Node.js 的解釋器比 PHP 的更小更靈活。 他并不受舊版語言遺留兼容問題的拖累,而且 Google 在 V8 引擎性能改善上出了大力。

應用永久在線

PHP 遵循標準客戶端-服務端模型。 每個頁面請求都會初始化應用; 你讀取配置參數、連接數據庫、讀取信息、渲染 HTML。Node.js 應用持久運行,只需要啟動一次。例如,你可以創建一個單獨數據連接對象,然后所求請求一起復用。公認的,PHP 也有一些途徑來實現,比如使用 Memcached ,但是這已經不是語言的標準特性了。

事件驅動,無阻塞 I/O

PHP 跟其他多數服務端語言采用阻塞執行的模型。 當你執行一個命令,比如從數據庫取數據,那么必須等這個指令執行完成后,才會執行下面的內容。 Node.js 通常不會等的。 取而代之的是, 你需要提供一個回調函數,這個函數當指令執行完后會被調用一次。例如:

這個例子中, 控制臺會先輸出‘finished',然后輸出‘N records returned',因為 process 函數是所有數據返回的時候才被調用的。 換句話說,當解釋器在其它進程處理的時候可以干些別的事情。

注意情況比較復雜,還有幾個警告:

Node.js/JavaScript 只能在單線程上運行,但是大多數 web 服務器都是多線程,而且并發的處理請求。

一個用戶長時間運行的 JavaScript 處理會阻止其它用戶的代碼執行,除非拆分任務或者使用Web Workers。

基準測試是主觀的和有缺陷的;可以找到一些例子 Node.js 比較好,而一些相對的例子 PHP 比較好 。程序員只是在嘗試證明他們的信仰!

書寫異步的事件驅動的代碼非常復雜,非常有挑戰性。

我只能從我的經驗來講: 我的 Node.js 應用要明顯比 PHP 的同等應用要快。你的可能不是,但是不試是永遠不會知道的。

第九輪:開發者激情

這會超出”常見網頁開發挑戰“這樣的目標,但是這很重要。如果你恐懼每天寫代碼,那你無所謂哪門語言更好。

很難為此做出比較但是一些 PHP 開發者對 PHP 這門語言很有激情。你最近一次讀到讓你走心的 PHP 文章或幻燈片是什么時候?也許已無需再說?可能是更低的曝光度?或者我沒找對地方?PHP7 有一些新的功能,但是該技術已經原地踏步很多年了,雖說如此,很少有開發人員對PHP發牢騷。

JavaScript 分離了社區,有人愛也有人恨,一些程序員在中間猶豫不決,經管如此,對 Node.js 的反饋大多積極,她正處于風口浪尖,一部分原因是因為她很新,贊譽不一定持續。目前,Node.js 贏得本輪。

第十輪:前景

您選擇采用哪種服務端語言并不重要;即使她不再被更新也會照樣繼續工作(yay ColdFusion?。┍M管使用量上趨于穩定但是很多人依然使用 PHP,我打包票她還能再堅挺二十年。

Node.js 崛起得很迅速,她提供了一種現代的開發方式,使用和客戶端開發一樣的語法同時支持 HTML5 變革式的特征,比如網絡套接字和服務端發送事件。盡管大家對該語言的分叉函數有些爭議,但是Node.js的使用量還是呈指數級增長。

Node.js 勢必會蠶食 PHP 的市場份額,但是我不認為她能完全取而代之。兩種技術都有光輝的未來。我宣布本輪平手。

最終贏家

最終分數:Node.js 贏得5輪,PHP 贏得4輪,一輪平手。原以為會倒向其中一方,結果比我預想的更中庸一些。

Node.js 有一定的學習曲線,對新手來說不夠理想但是她贏得了本次對決。而且,如果你是位喜歡該語言的靠譜的 JavaScript 程序員,Node.js 不會讓你失望。她更新潮而且提供自己網頁開發的體驗,你不會思念 PHP。

但是不要貶低 PHP,PHP 依然有活力,你不該因為 Node.js 快一些,新一些或新潮一些就去緊跟 Node.js 潮流。PHP 易學而且依然支持專業的編程技巧,幫助無處不在而且開發簡單。甚至死忠的 Node.js 開發者也不得不在簡單網站和應用時考慮使用 PHP。

我的建議是:評估選項,根據你的需求來選擇一門語言,這比本文這樣的”對比“文章靠譜得多。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线免费看| 91高清视频免费观看| 全球成人中文在线| 在线日韩日本国产亚洲| 亚洲精品视频免费在线观看| 国产成人精品视频在线| 精品无人区太爽高潮在线播放| 亚洲午夜未满十八勿入免费观看全集| 欧美国产日韩xxxxx| 美女视频久久黄| 久久青草精品视频免费观看| 色婷婷综合成人| 国产成人+综合亚洲+天堂| 国产精品入口福利| 5252色成人免费视频| 亚洲激情在线视频| 色无极影院亚洲| 欧美精品videossex88| 国产伦精品一区二区三区精品视频| 国产精品一区二区av影院萌芽| 欧美日韩精品国产| 国产亚洲欧洲在线| 欧美成人在线免费视频| 国产精品啪视频| 国产亚洲一区二区在线| 欧美不卡视频一区发布| 亚洲欧洲自拍偷拍| 97视频在线播放| 国产婷婷色综合av蜜臀av| 日本精品免费观看| 亚洲伊人成综合成人网| 久99九色视频在线观看| 国产精品羞羞答答| 亚洲精品综合精品自拍| 69精品小视频| 国产丝袜一区二区| 国产精品入口尤物| 久久99精品久久久久久青青91| 国产激情999| 国产精品一区二区久久久| 久久久精品免费| 57pao国产成人免费| 一区二区三区四区在线观看视频| 国产成人精品免费久久久久| 色婷婷av一区二区三区久久| 欧美裸体视频网站| 97碰在线观看| 欧美一级大片视频| 91情侣偷在线精品国产| 欧美日韩第一视频| 精品成人在线视频| 欧美性jizz18性欧美| 日韩久久免费视频| 久久精视频免费在线久久完整在线看| 欧美激情精品久久久久久久变态| 国产91|九色| 日韩美女在线播放| 国产91精品青草社区| 欧洲成人午夜免费大片| 国产精品小说在线| 日韩精品视频在线播放| xvideos成人免费中文版| 色综合视频一区中文字幕| 97精品一区二区视频在线观看| 亚洲人成毛片在线播放| 国产精品av电影| 欧美激情a在线| 国产精品女视频| 91久久国产综合久久91精品网站| 国产欧美亚洲精品| 久久精品视频免费播放| 色综合色综合久久综合频道88| 日本aⅴ大伊香蕉精品视频| 青青精品视频播放| 亚洲欧洲在线看| 国产91热爆ts人妖在线| 成人精品一区二区三区电影黑人| 97久久精品国产| 狠狠久久亚洲欧美专区| 亚洲精品日韩欧美| 国产精品永久在线| 成人免费淫片视频软件| 亚洲午夜av久久乱码| 懂色av中文一区二区三区天美| 狠狠久久亚洲欧美专区| 懂色aⅴ精品一区二区三区蜜月| 国产中文字幕日韩| 日韩欧美在线国产| 亚洲一区二区少妇| 成人免费大片黄在线播放| 久久欧美在线电影| 国产精品99久久久久久久久久久久| 国产在线观看精品| 在线视频欧美日韩| 怡红院精品视频| 亚洲精品美女久久久久| 日韩欧美亚洲一二三区| 国产主播喷水一区二区| 欧美精品一区在线播放| 2021久久精品国产99国产精品| 91国产视频在线| 久久久久久国产精品| 红桃av永久久久| 成人国产亚洲精品a区天堂华泰| 中文字幕久精品免费视频| 久久6精品影院| 热门国产精品亚洲第一区在线| 日本国产欧美一区二区三区| 日韩人体视频一二区| 欧美电影电视剧在线观看| 精品久久久久久久久久久久久| 国外成人在线视频| 日韩av最新在线| 国产精品99久久久久久人| 亚洲精品国产电影| 91九色国产在线| 成人欧美在线观看| 最好看的2019的中文字幕视频| 亚洲free性xxxx护士白浆| 亚洲一区二区三区四区在线播放| 狠狠久久亚洲欧美专区| 久久久电影免费观看完整版| 97在线日本国产| 97香蕉久久夜色精品国产| 欧美激情xxxx性bbbb| 亚洲va欧美va国产综合剧情| 国产在线精品播放| 精品国产一区二区在线| 亚洲欧美国产日韩中文字幕| 色妞色视频一区二区三区四区| 亚洲理论片在线观看| 亚洲国产精品va在看黑人| 国产va免费精品高清在线观看| 欧美色道久久88综合亚洲精品| 国产精品日日摸夜夜添夜夜av| 日韩精品视频免费在线观看| 国产成人免费91av在线| 亚洲男人天堂2023| 国产噜噜噜噜久久久久久久久| 国产精品久久久久高潮| 亚洲免费福利视频| 日韩国产欧美精品在线| 91在线网站视频| 国产美女91呻吟求| 国产精品亚洲аv天堂网| 亚洲欧美制服丝袜| 中文字幕免费精品一区高清| 欧美美最猛性xxxxxx| 欧美性猛交xxxx乱大交3| 欧美日韩国产91| 欧美在线视频一区| 91精品国产乱码久久久久久蜜臀| 色噜噜久久综合伊人一本| 欧美乱妇高清无乱码| 久久久久久久激情视频| 北条麻妃99精品青青久久| 57pao国产精品一区| 欧美日韩亚洲视频一区| 亚洲精品小视频在线观看| 欧美一区二区影院| 国产欧美亚洲精品| 91精品在线影院| 欧美视频专区一二在线观看| 色777狠狠综合秋免鲁丝|