1. 程式人生 > >面試題:node.js的基本知識點闡述

面試題: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
版權宣告:本文為博主原創文章,轉載請附上博文連結!