{eval=Array;=+count(Array);}
Node.js 和 PHP 是兩個(gè)服務(wù)器端技術(shù)領(lǐng)域中的競(jìng)爭(zhēng)者,需要精通哪種技術(shù)完全取決于你所面向的用戶群體和構(gòu)建的應(yīng)用程序類(lèi)型。
使用 Node.js 只需要寫(xiě) Javascript,但是在入門(mén)之前需要理解一些復(fù)雜概念,比如 web worker 和回調(diào)函數(shù)。
項(xiàng)目選擇 PHP 還是 Node.js 開(kāi)發(fā),并不是拍腦袋決定的,和網(wǎng)站的定位有很大關(guān)系。PHP 有 Wordpres 背書(shū),全球有大量的網(wǎng)站使用到 PHP,如果能有合適的模板,能做到快速開(kāi)發(fā),快速集成上線,充分應(yīng)對(duì)小流量的客戶請(qǐng)求。Node.js 遵循事件驅(qū)動(dòng)的非阻塞I/O模型,處理大量服務(wù)請(qǐng)求得心應(yīng)手,各種模塊輕松集成,并且?guī)缀醪恍枰獠恳蕾?lài)就能運(yùn)行起一個(gè) web 應(yīng)用。如今,還有一種流行的應(yīng)用——單頁(yè)應(yīng)用程序(Single Page Application),看起來(lái)只有一個(gè)頁(yè)面,頁(yè)面刷新都是通過(guò)與 Node.js 交互直接生成 html,很方便實(shí)現(xiàn)千人千面效果。另外,Node.js 在模塊化與協(xié)同編程方面,PHP 也是望塵莫及。學(xué)會(huì)了 JS ,就想往全棧方面考慮,實(shí)在為時(shí)過(guò)早。全棧是要搞定設(shè)計(jì),后臺(tái)開(kāi)發(fā),前端開(kāi)發(fā),移動(dòng)開(kāi)發(fā),后期運(yùn)營(yíng)維護(hù)上線,這里的每一步都不是一兩下能進(jìn)階的,僅僅入門(mén)的話,實(shí)際上還不如不會(huì)。企業(yè)面試的時(shí)候,看啥啥都會(huì),一問(wèn)三不知。在精力有限的情況下,將一個(gè)技術(shù)用到極致,那才是真正的大神。
不成熟的程序員是見(jiàn)異思遷的,只考慮技術(shù)問(wèn)題。市場(chǎng)是理性的,考慮語(yǔ)言的生態(tài),部署難易,解決方案成熟度,招聘成本等因素。
Nodejs和PHP都要學(xué),但要有個(gè)先后順序,先學(xué)PHP,再學(xué)nodejs ,因?yàn)閚odejs 已經(jīng)用到了后端的思想和知識(shí)了。
建議再學(xué)這兩門(mén)課之前,最好先學(xué)一下Linux,這樣你不光學(xué)的更扎實(shí),也會(huì)走的更遠(yuǎn)!
建議學(xué)習(xí) Node.js ,因?yàn)槟惚旧頃?huì)js的話直接學(xué)Node會(huì)快很多。
PHP 和 Node.js 的基本區(qū)別在于 PHP 是一種編程語(yǔ)言,Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境。
1.性能:
在性能方面,Node.js 顯然好很多。由于 Node.js 遵循事件驅(qū)動(dòng)的非阻塞I/O模型,與傳統(tǒng)的后端技術(shù)相比,Node.js 能夠處理大量的服務(wù)器請(qǐng)求。
2.外部依賴(lài):
Node.js 依賴(lài)關(guān)系較少,用幾行代碼就可以設(shè)置一個(gè) Web 服務(wù)器。但運(yùn)行 PHP 應(yīng)用程序,就需要外部服務(wù)器軟件。用 Node.js 的開(kāi)發(fā)人員只需要 NPM(節(jié)點(diǎn)包管理器)就可以下載 Node 模塊,這些模塊可以輕松地集成到應(yīng)用程序中,提供額外的功能。
3.開(kāi)發(fā)環(huán)境:
Node.js 可以用于桌面應(yīng)用程序開(kāi)發(fā)(Windows,Linux和Mac),移動(dòng)應(yīng)用程序開(kāi)發(fā)(混合和跨平臺(tái)應(yīng)用程序),甚至構(gòu)建基于控制臺(tái)的應(yīng)用程序。雖然有一些也可以使用 PHP 來(lái)開(kāi)發(fā),但是大多數(shù)開(kāi)發(fā)人員不會(huì)這樣做。
4.社區(qū)支持:
由于 PHP 比 Node.js 早誕生將近20年,所以在文檔,API 和代碼庫(kù)等在線資源方面更為豐富。所以很有可能其他人也嘗試了你想要用代碼完成的事情并從中獲得了幫助。另一方面,Node.js 雖然已經(jīng)得到了開(kāi)發(fā)者和組織的廣泛關(guān)注,但是它支持開(kāi)發(fā)者開(kāi)發(fā)的資源缺相當(dāng)少。
5.學(xué)習(xí)曲線:
編寫(xiě) Node.js 代碼對(duì)于新手甚至是專(zhuān)業(yè)的 JavaScript 開(kāi)發(fā)人員來(lái)說(shuō)都不是件容易的事情,因?yàn)樗麄冃枰谌腴T(mén)之前理解一些復(fù)雜的概念,比如 web worker 和回調(diào)函數(shù)。相反,PHP是一門(mén)非常友好的編程語(yǔ)言對(duì)于開(kāi)發(fā) Web 應(yīng)用程序的新手來(lái)說(shuō)。
總之這兩種技術(shù)都有各自的優(yōu)點(diǎn)和缺點(diǎn)。我是覺(jué)得 Node.js 比較有前途。
雖然全棧工程師只是碼農(nóng)中的很小一部分,但還是有一些IT業(yè)者的目標(biāo)是成為全棧式工程師。要想成為全棧式工程師,需要學(xué)的東西還真不少。比如,前端要會(huì)html, css, Javascript,Jquery, 有的可能還需要懂vue, Angular,react native,后端要懂PHP, Java, C語(yǔ)言等。若是移動(dòng)開(kāi)發(fā)就要會(huì)Java/Android(安卓平臺(tái))或者object-c(蘋(píng)果平臺(tái))。
對(duì)于web開(kāi)發(fā)來(lái)說(shuō),除了基本的html, Javascript現(xiàn)在是大熱門(mén),其應(yīng)用的范圍越來(lái)越廣,可應(yīng)用的場(chǎng)景也越來(lái)越多。而后端技術(shù),如php(或者替換語(yǔ)言,如Java、C語(yǔ)言)也是搭建網(wǎng)絡(luò)平臺(tái)不可或缺的技能。說(shuō)實(shí)在的,這兩門(mén)技藝都是成為全棧工程師必須掌握的技能。但是,如果時(shí)間來(lái)不及同時(shí)學(xué)兩門(mén)語(yǔ)言,那么先學(xué)哪個(gè)對(duì)實(shí)現(xiàn)目標(biāo)更為有利呢?個(gè)人以為,應(yīng)該優(yōu)先考慮學(xué)習(xí)PHP(或其他后端語(yǔ)言,如java或c),而不是Javascript.
Javascript雖然也是十分重要的,可是相對(duì)來(lái)說(shuō)后端技術(shù)需要投入的學(xué)習(xí)時(shí)間和難度要更大些。如果有了html和css的基礎(chǔ),項(xiàng)目開(kāi)發(fā)中遇到少量需要使用Javascript的場(chǎng)景,完全可以通過(guò)網(wǎng)絡(luò)現(xiàn)學(xué)些基礎(chǔ)、或者通過(guò)現(xiàn)成的jquery代碼來(lái)應(yīng)付,而后端編程如果沒(méi)有好好學(xué)習(xí)過(guò),基本上啥也做不了!而且,如果先學(xué)會(huì)了后端技術(shù),將來(lái)再學(xué)javascript就更簡(jiǎn)單些。同時(shí),也會(huì)縮短成為全棧工程師所需時(shí)間。因此,想成為全棧工程師的筒子們應(yīng)該先攻克PHP(或其他后端語(yǔ)言),然后再學(xué)Javascript。
Nodejs、PHP、Python、Java、Golang都可以。
不過(guò)如果想成為前端開(kāi)發(fā)工程師Nodejs是必不可少的,但是Nodejs很難讓你對(duì)后端有一個(gè)更加深入的理解,你應(yīng)該還要學(xué)一門(mén)后端編程語(yǔ)言才行,PHP或者Golang、Python,這三個(gè)學(xué)習(xí)的門(mén)檻都不算高。
所以Nodejs和PHP都要學(xué),如果一定要舍棄一個(gè),那可以先只學(xué)PHP。
商人工作在白色寬闊,俯視圖
node.js技術(shù)才是全棧必備。而且學(xué)習(xí)成本很低幾乎平滑過(guò)渡,只是須要多了解js在服務(wù)端得處理機(jī)制!
用node 開(kāi)發(fā)接口你用了就知道有多坑了。需要有很強(qiáng)的異步編程思維。否則簡(jiǎn)單的curd加casher就很難搞定。 說(shuō)PHP落伍的 可能思維和眼界還停留在tp PHP5.3點(diǎn)時(shí)代。 不管什么語(yǔ)音開(kāi)發(fā)go 也好 PHP也好 都有做代碼和緩存數(shù)據(jù)庫(kù)上的優(yōu)化 否則再好的語(yǔ)言也是白搭。 性能90%在數(shù)據(jù)庫(kù)上 你要考慮用什么的框架既可以簡(jiǎn)化SQL操作 又可以有很強(qiáng)的定制SQL能力。在這方面PHP應(yīng)該是沒(méi)對(duì)手的。 laravel很方便進(jìn)行代碼的快遞迭代開(kāi)發(fā)。但是寫(xiě)好的代碼要考慮內(nèi)存消耗,性能優(yōu)化。這方面加上的話你就知道寫(xiě)什么項(xiàng)目都是業(yè)務(wù)問(wèn)題了。
PHP這種“世界最好的語(yǔ)言”,早已跌下神壇,不利于現(xiàn)在的前后端分離模式的開(kāi)發(fā),而且它那糟糕的錯(cuò)誤處理機(jī)制一直飽受詬病。移動(dòng)數(shù)據(jù)時(shí)代,大量的APP,數(shù)據(jù)的迸發(fā),迭代,使用js,配合vue,react,Angelajs等主流框架,幾乎涵蓋所有現(xiàn)有應(yīng)用開(kāi)發(fā),node本身就是為了前端全棧而設(shè)計(jì),是前端全棧的基石。
就目前發(fā)展而言,建議完全掌握js,html,css后,強(qiáng)化webpack,glup,es6,typescript等知識(shí)。然后迅速進(jìn)入node開(kāi)發(fā)后端,很快可以開(kāi)發(fā),部署應(yīng)用。
在空余時(shí)間再考慮go語(yǔ)言作為后端語(yǔ)言,雖然go的熱度不如Java,c和Python。但是作為五年個(gè)人開(kāi)發(fā)者,個(gè)人認(rèn)為Python如沒(méi)有較大的機(jī)制改變,會(huì)布PHP后塵,Java雖然是大廠維護(hù),但它底層代碼十分混亂,連開(kāi)發(fā)Java的公司員工都在吐槽。c是比較難的語(yǔ)言,不適合快速學(xué)習(xí)和部署。
強(qiáng)烈推薦你學(xué)習(xí)nodejs
1、已經(jīng)學(xué)會(huì)javascript語(yǔ)言可以直接上手nodejs,畢竟學(xué)習(xí)php也是需要時(shí)間的。
2、javascript一門(mén)語(yǔ)言前端和后端通吃,避免與其他語(yǔ)言很雜寫(xiě)的麻煩,一會(huì)兒寫(xiě)javascript,一會(huì)兒寫(xiě)php,來(lái)回切換太麻煩。
3、nodejs也是前端工程師必備技能,可以直接應(yīng)聘大前端,也利于個(gè)人職業(yè)規(guī)劃。
4、建議做“T”型人才,深耕一項(xiàng)技能小有成就后,再學(xué)習(xí)擴(kuò)展周邊技能。
10
回答3
回答0
回答0
回答0
回答5
回答0
回答0
回答10
回答2
回答