面試題:node.js的基本知識點闡述
文章轉載自部落格:https://blog.csdn.net/Lucky_LXG/article/details/54575515?utm_source=blogxgwz0。
感謝原作者。
一、Node.js是什麼
關於這個問題,剛看到它的時候,可能覺得和javascript有關係,沒錯,確實有關係;但是,首先Node.js不是一門語言,與php python perl ruby的
“既是語言又是平臺”不同;Node.js也不是一個javascript框架或者javascript類庫,不同於Jquery ExtJS;Node.js是一個可以讓javascript執行在
伺服器端的平臺;
官網:https://nodejs.org/en/
二、Node.js特點
Node.js具有以下特點:
①是一個javascript執行環境或者平臺
②依賴於Chrome V8引擎進行程式碼解釋
③基於事件驅動
④非同步式I/O(非阻塞I/O)
⑤單程序、單執行緒
⑥輕量、可伸縮,適用於實時資料互動應用
通過以上的特點,我們可以總結一句話:
Node.js是用非同步式I/O和事件驅動,依賴於Chrome的V8引擎進行程式碼解釋的javascript執行環境;
Node.js最大的特點就是非同步式I/O和事件驅動,對於高併發的解決方法,Node.js摒棄了傳統的多執行緒模型,
使用的是單執行緒模型,對所有的I/O請求都採用非同步式請求的方式;
這裡簡單介紹下,非同步式I/O和事件驅動:
非同步式I/O,又叫非阻塞I/O,
在阻塞狀態下,當執行緒遇到I/O操作時,會等待I/O操作的完成,從而造成阻塞,而一個執行緒只能處理一項任務,要想提供吞吐量必須通過多執行緒;
而非阻塞狀態下,不會等待I/O操作的結果返回,繼續執行下一條語句,當結果返回時,I/O以事件的方式通知;
Node.js的非同步式I/O由回撥函式完成,事件的回撥函式在遇到I/O請求並且當I/O操作完成時,會發送一個事件
到事件佇列,而Node.js的事件迴圈機制會檢查佇列中有沒有未處理的事件,直到程式結束,所以可以說,
Node.js程式由事件迴圈開始,到事件迴圈結束。
三、Node.js的用途
Node.js適合應用在高併發、I/O密集、少量業務邏輯的場景
善於I/O,不善於計算。因為Node.js最擅長的就是任務排程,如果你的業務有很多的CPU計算,實際上也相當於這個計算阻塞了這個單執行緒,就不適合Node開發。
當應用程式需要處理大量併發的I/O,而在向客戶端發出響應之前,應用程式內部並不需要進行非常複雜的處理的時候,Node.js非常適合。Node.js也非常適合與web socket配合,開發長連線的實時互動應用程式。
比如:
● 使用者表單收集
● 考試系統
● 聊天室
● 圖文直播
● 提供JSON的API(為前臺Angular使用)
不適合的場景:
1.計算密集型應用
2.單使用者多工的程式
3.邏輯十分複雜的事務
4.unicode與國際化
---------------------
作者:Lucky_LXG
來源:CSDN
原文:https://blog.csdn.net/Lucky_LXG/article/details/54575515
版權宣告:本文為博主原創文章,轉載請附上博文連結!