nodejs的缺點(diǎn):1、不適合CPU密集型應(yīng)用;2、只支持單核CPU,不能充分利用CPU;3、可靠性低;4、開源組件庫質(zhì)量參差不齊,更新快,向下不兼容;5、Debug不方便,錯誤沒有stack trace。
本教程操作環(huán)境:windows7系統(tǒng)、nodejs 12.19.0版、Dell G3電腦。
Node.js本質(zhì)上是一個JavaScript的運(yùn)行環(huán)境。
Node.js是一個基于Chrome JavaScript運(yùn)行時建立的平臺, 用于方便地搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。Node.js使用事件驅(qū)動,非阻塞I/O 模型而得以輕量和高效,非常適合在分布式設(shè)備上運(yùn)行數(shù)據(jù)密集型的實(shí)時應(yīng)用。
nodejs的缺點(diǎn):
1、不適合CPU密集型應(yīng)用;
CPU密集型應(yīng)用給Node帶來的挑戰(zhàn)主要是:由于JavaScript單線程的原因,如果有長時間運(yùn)行的計(jì)算(比如大循環(huán)),將會導(dǎo)致CPU時間片不能釋放,使得后續(xù)I/O無法發(fā)起;
-
解決方案:分解大型運(yùn)算任務(wù)為多個小任務(wù),使得運(yùn)算能夠適時釋放,不阻塞I/O調(diào)用的發(fā)起;
2、只支持單核CPU,不能充分利用CPU
3、可靠性低,一旦代碼某個環(huán)節(jié)崩潰,整個系統(tǒng)都崩潰
-
原因:單進(jìn)程,單線程
4、開源組件庫質(zhì)量參差不齊,更新快,向下不兼容
5、Debug不方便,錯誤沒有stack trace
適合NodeJS的場景
1. RESTful API
這是NodeJS最理想的應(yīng)用場景,可以處理數(shù)萬條連接,本身沒有太多的邏輯,只需要請求API,組織數(shù)據(jù)進(jìn)行返回即可。它本質(zhì)上只是從某個數(shù)據(jù)庫中查找 一些值并將它們組成一個響應(yīng)。由于響應(yīng)是少量文本,入站請求也是少量的文本,因此流量不高,一臺機(jī)器甚至也可以處理最繁忙的公司的API需求。
2. 統(tǒng)一Web應(yīng)用的UI層
目前MVC的架構(gòu),在某種意義上來說,Web開發(fā)有兩個UI層,一個是在瀏覽器里面我們最終看到的,另一個在server端,負(fù)責(zé)生成和拼接頁面。
不討論這種架構(gòu)是好是壞,但是有另外一種實(shí)踐,面向服務(wù)的架構(gòu),更好的做前后端的依賴分離。如果所有的關(guān)鍵業(yè)務(wù)邏輯都封裝成REST調(diào)用,就意味著在上層 只需要考慮如何用這些REST接口構(gòu)建具體的應(yīng)用。那些后端程序員們根本不操心具體數(shù)據(jù)是如何從一個頁面?zhèn)鬟f到另一個頁面的,他們也不用管用戶數(shù)據(jù)更新是 通過Ajax異步獲取的還是通過刷新頁面。
3. 大量Ajax請求的應(yīng)用
例如個性化應(yīng)用,每個用戶看到的頁面都不一樣,緩存失效,需要在頁面加載的時候發(fā)起Ajax請求,NodeJS能響應(yīng)大量的并發(fā)請求?! 】偠灾?,NodeJS適合運(yùn)用在高并發(fā)、I/O密集、少量業(yè)務(wù)邏輯的場景。
【推薦學(xué)習(xí):《nodejs 教程》】