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