溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

node相比傳統(tǒng)服務(wù)端技術(shù)棧差在哪里?

發(fā)布時(shí)間:2020-07-13 17:48:30 來源:網(wǎng)絡(luò) 閱讀:285 作者:可樂程序員 欄目:web開發(fā)


著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

原因

人:

用node的人很多,相當(dāng)多,而且npm包數(shù)量冠絕全場(chǎng),但是node主要使用者是前端,就比如express這個(gè)庫,我覺得一半的下載量是用在了前端框架的服務(wù)端渲染和webpack的HMR了,并不是用在了真正的服務(wù)端挑大梁的開發(fā)中.

還有一點(diǎn),除了少數(shù)node牛人,大部分node使用者服務(wù)端知識(shí)太匱乏,什么分層、多線程、并發(fā)、IPC基本沒有,操作系統(tǒng)的知識(shí)可能僅僅停留在幾個(gè)bash命令上,說白了node使用者雖然多但是并不是真正的服務(wù)端開發(fā)人員(絕大多數(shù)是前端順手寫個(gè)node),實(shí)際上工作中只靠node為生的服務(wù)端人員數(shù)量很少,導(dǎo)致其在工業(yè)界實(shí)踐并不如向他社區(qū)那樣火爆.

性能:

性能要分兩方面看,一方面是io性能,一方面是計(jì)算性能,node安身立命的家伙就是i/o爆表,事件驅(qū)動(dòng)的特性使得node的i/o十分卓越,不然當(dāng)初它也不能被發(fā)明出來.

cpu計(jì)算性能的確是node的軟肋,跟java/c#自然是不能比,但是web開發(fā)大多數(shù)情況下要命的是i/o,而且node的性能比java/c#差不代表比其他語言差,比ruby/python還是快出很多倍,而且可以調(diào)用c/c++模塊來處理cpu密集型任務(wù)(python等性能較差語言的通常做法),以下是個(gè)性能參考網(wǎng)站.

總而言之node在i/o有其卓越的方面,cpu密集型任務(wù)是node的軟肋但不致命.


類型:

我可不可以理解這個(gè)類型原因是因?yàn)殪o態(tài)強(qiáng)類型語言可以更好的規(guī)避錯(cuò)誤,提高工程質(zhì)量,我覺得這個(gè)原因應(yīng)該是比較小的.

一方面typescript+node是很多公司的標(biāo)配了,雖然typescript只是靜態(tài)類型,但是寫起來跟c#幾乎跟親兄弟一樣,在這方面并不是node吃虧的地方.

另一方面,并不是說動(dòng)態(tài)弱類型能否決一門語言,我大PHP不是世界上最好的語言嗎?


積累:

這個(gè)問題可以跟這個(gè)原因結(jié)合在一起,node的社區(qū)一向火爆,但是在工業(yè)界的實(shí)踐跟其社區(qū)火爆比起來差很多,當(dāng)然不少國內(nèi)外的大廠已經(jīng)有一些實(shí)踐,比如國內(nèi)node最牛的阿里,但是讓node獨(dú)挑大梁的實(shí)踐還是不足,很多情況下是作為渲染層出現(xiàn),就比如淘寶真正的后端還是java挑大梁,node做渲染.

我們可以類比同時(shí)期出現(xiàn)的golang,golang的火爆是隨著業(yè)界眾多實(shí)踐的成功逐漸火爆起來的,這使得golang在近幾年一年比一年受開發(fā)者歡迎,Stack Overflow做的調(diào)查里使用者里最喜歡的語言是go,未使用者里最想嘗試的語言也是go,go在云計(jì)算領(lǐng)域積累的足夠多的實(shí)踐加上docker這種殺手級(jí)應(yīng)用的加持屬于一步一個(gè)腳印火出來的.

node不同,屬于一出來就紅遍半邊天,前端開發(fā)者們把整個(gè)社區(qū)引爆了,但是這么多年在工業(yè)界殺手級(jí)別的應(yīng)用和實(shí)踐跟其火爆程度不成正比,反而導(dǎo)致如今勢(shì)頭平淡了許多.


做個(gè)總結(jié)吧:

node隨著發(fā)展已經(jīng)摘掉了很多當(dāng)初對(duì)他的黑點(diǎn),比如單線程:其實(shí)cluster出來很久了多線程的實(shí)踐是沒問題的,比如回調(diào)地獄:這個(gè)隨著es6+普及有無數(shù)個(gè)解決方案,比如動(dòng)態(tài)類型,typescript很成熟了.

反而node有不少優(yōu)點(diǎn),比如i/o密集型,事件驅(qū)動(dòng),社區(qū)活躍,前后端語言統(tǒng)一等等.

node真正的問題不是語言或者類型的問題,而是真正node從業(yè)者太少(雖然使用者多),缺乏工業(yè)界大量成熟的實(shí)踐.


ps: node相關(guān)的書也太匱乏了,目前看過最好的就是樸靈的<九淺一深node.js>還是4年前的作品,node原理相關(guān),其它node相關(guān)的書不是講的太淺就是平庸之作,大量的教你弄個(gè)聊天室教你弄個(gè)博客,反觀人家java<java并發(fā)編程><深入java虛擬機(jī)><java編程思想>,你看看人家的書講的都是啥?


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI