php 和nodejs 的各自優勢有哪些,如果無基礎開始,要學那個好?


無任何基礎就 PHP 吧

走 LAMP 系


第一次答題,想想還有點小激動呢~

本人目前一直從事Nodejs開發,之前有稍微接觸過PHP,本答案對題不對語言,極端份子不喜勿噴。

首先貼兩張圖,先直觀地感受一下兩種語言不同的魅力,後面我來聊聊我對這兩種語言的理解。

第一張是我用Nodejs為mongoose編寫的簡單的事務回滾模塊。

第二張是我用PHP寫的類似於Express框架的路由模塊。

1.語法

相信看了上面的兩張圖,對於兩種語言最直觀的感覺是語法相差甚大。

首先來說說PHP

PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。

以上這句話摘於百度百科。PHP的語法是公認的比較獨特的語法了,集百家之長,再加以創新。學習過OO的同學們一定會對此倍感親切。不過對於我並不長的PHP編碼經歷,讓我無法忍受的一點就是PHP的變數名必須在前面加一個$符號了。

至於Nodejs,Node本身就是Javascript語言,對於Web前端腳本開發者來說,學習Node簡直是如魚得水。Javascript作為腳本語言,在代碼的編寫上有極大的自由(畫外音:PHP也是腳本語言好么!),但是Javascript的非同步編碼風格確實是讓以學習同步編碼風格的語言入門的同學Hold不住。

在語法方面,我更傾向於Nodejs(畢竟人家是寫Javascript出身的233333)。PHP對於臣妾來說寫的實在太累啦~

2.效率

這一點其實沒有必要比較了,

Web語言效率問題,PHP還是Nodejs

看一下這裡一樓的大大說的。

Nodejs憑藉高效的V8引擎和它非阻塞非同步I/O的特性,在其執行效率上遠遠超過了其他的腳本語言。

Node.js比PHP快14倍!

這裡這位大大在效率方面分析的更加到位。當然我並不是在追捧Nodejs,就像這位大大說的

這不是簡單語言細節之爭,而是語言框架之爭。將Node.JS這種非同步機制從Javasctipt搬移到其他語言PHP .NET Java其實都會取得比原來堵塞方式有數十倍提高。

3.使用場景

毋庸置疑,這兩種語言都是為Web開發而生。PHP多樣化的內置方法和庫,讓Web開發變得極其的方便和高效,成熟的語言框架也給開發者提供了足夠高的健壯性和穩定性。而Nodejs以其強大的特性吸引了大量的開發者為其貢獻擴展庫,Nodejs項目雖然還很年輕,但是已經聚集了大量的開發資源。

4.小結

畢竟對PHP了解的較少,所以以上言論中難免有點偏向於Nodejs,但是PHP發展多年屹立不倒肯定是有它的道理的,百度還用的PHP呢。

至於Nodejs,作為一門新興(並不新啊,Javascript可比PHP老多了)語言來講,它獨特的設計特性足夠吸引開發者向它看了。

最終回到題主的問題,不知道題主說的沒有基礎是指完全沒有編程基礎還是沒有伺服器開發基礎?

如果完全沒有編程基礎的話,我建議題主還是先去學習C語言,先入了這一行,再選工具吧~

如果有編程基礎的話,如果之前是學習OO的,建議先從PHP入手,畢竟更容易過渡,並且網路上對於PHP的資料要比Nodejs多得多。

如果之前學習過Javascript,我還是建議先從PHP入手,就像上面說的,先入了這一行,再選工具。伺服器開發也算一個小行了,如果對伺服器開發不了解,對網路機制不了解的話,先從PHP著手,把這些相關知識補充起來。

如果實在是被Nodejs的優勢吸引住了的話,我建議先好好學習Javascript高級編程,深入理解一下異原型鏈和回調機制,這會對入手Nodejs有極大的幫助。

入行需謹慎,跳坑爬不出啊~

我不生產答案,我只是答案的搬運工!以上大都摘自網路。


我假設你要開發網站。否則的話,略過以下回答。

無基礎建議從 PHP開始。

世界上60+%以上的網站用PHP開發的,有他自己的道理。

然後你應該學點Javascript,動態部分需要用到它。

Noje.js依託Javascript語法,如果你會JS後,再開始學會好一點。

網站大了以後,一般會改用Java/Scala語言,因為PHP需要解釋執行腳本,速度上比不上Java編譯後的位元組碼。

小結一下:PHP + JS =&> Java + JS。

最後,有時間、有興趣的話可以再看一下Scala/Go/Rust等業界最新語言。謝謝。


無基礎學PHP。最簡單的。

nodejs的事件機制對初學者非常不合適。


php工程師會叫你學php,因為他會說,php是世界上最好的語言!


我沒用過PHP。

如果你什麼語言的基礎都沒有,不建議你直接上nodejs。還是從其他標準一點的後端語言開始接觸面向對象,MVC框架。Ruby,Python,Php首選,打好基礎是關鍵。

新手一上去看到函數式的類實現,估計除了天賦較好的大多數都會搞暈了,JS的類實現不那麼「標準」,對於你理解面向對象是會有混淆的。

如果一上來就用nodejs,你可能會很疑惑傳給createServer那個函數里的request,response是什麼,response響應頭之類的又是什麼東西。因為你沒有MVC經驗,不知道Web框架,模板之類的到底是什麼東西,並且JS的面向對象實現的不那麼「標準」,node的資料又不多,基本上沒有多少中文資料,學起來可能會有困難。

如果你有其他面向對象語言基礎(不需要水平太怎麼樣)。JS語法3天,node上手1天,直接看api和一些node框架的源碼吧,當然要熟練那就另當別論了。


我覺得對應的應用場景不同,NodeJS應該主要應用在事務較少的web services上,搭配NoSQL資料庫,達到很棒的性能。而且socketio實現web聊天也是Node的一個應用場景。

PHP應用在網頁的呈現上比較好。PHP開發速度也很快,可以用於快速原型,不斷迭代,效率其實還不是很差。

nodejs比php難學一些。而且非同步的回調風格很容易讓人踩坑。而且nodejs的調試也不方便。

綜上所述,推薦Python。


nodejs吧,js順便也就會了,再學學 html css 就可以寫網站了~


nodejs不容易寫,先開始php吧


寫PHP時可以啟用無腦模式,好方便,但函數命名,參數位置不統一,著實噁心。寫node,額……,算了吧,還是乖乖用Java吧,(逃


看是弄什麼吧

如果是要搭wp這種東西玩玩的話就PHP

如果是伺服器比較渣對高並發有點要求,而且想試試新玩法可以嘗試nodejs

其實這兩個遲早都會學會,畢竟php和js

所以還是寫python吧


推薦閱讀:

node.js與php相比有哪些優缺點?未來會替代php成為最好的語言嗎?
Nodejs中 Callback 的執行是否造成阻塞?
參加第11屆D2前端技術論壇,你有什麼收穫?
package-lock.json 需要寫進 .gitignore 嗎?

TAG:編程語言 | PHP | Nodejs |