node.js 使用C 開發的。 它是JS運行平台(運行環境)。它的語法就是javascript,差別在它是運行在伺服器上的。證據:node的源碼在GitHub網站上, 專案根目錄的src資料夾下很多以.cc 後綴結尾的文件裡有class字眼( C 有class而C沒有)
#Node.js不會為每個客戶連接建立一個新的線程,而只使用一個線程。當有使用者連線了,就觸發一個內部事件,透過非阻塞I/O、事件驅動機制,讓Node.js程式宏觀也是並行的。使用Node.js,一個8GB記憶體的伺服器,可以同時處理超過4萬用戶的連線。
由於Node.js中採用了非阻塞型I/O機制,因此在執行了存取資料庫的程式碼之後,將立即轉而執行其後面的程式碼,把資料庫傳回結果的處理程式碼放在在回調函數中,從而提高了程式的執行效率。
當某個I/O執行完畢時,將以事件的形式通知執行I/O操作的線程,執行緒執行這個事件的回呼函數。為了處理非同步I/O,執行緒必須有事件循環,不斷的檢查有沒有未處理的事件,依序加以處理。
在Node中,客戶端請求建立連接,提交資料等行為,會觸發對應的事件。在Node中,在一個時刻,只能執行一個事件回呼函數,但是在執行一個事件回呼函數的中途,可以轉而處理其他事件(比如,又有新用戶連接了),然後返回繼續執行原事件的回呼函數,這種處理機制,稱為「事件環」機制。
Node.js底層是C (V8也是C 寫的)。 底層程式碼中,近半數都用於事件佇列、回呼函數佇列的建置。用事件驅動來完成伺服器的任務調度,這是鬼才才能想到的。針尖上的舞蹈,用一個線程,擔負起了處理非常多的任務的使命。
Node.js適合用來開發什麼樣的應用程式呢?
善於I/O,不善於計算。因為Node.js最擅長的就是任務調度,如果你的業務有很多的CPU運算,其實也相當於這個運算阻塞了這個單線程,就不適合Node開發。
當應用程式需要處理大量並發的I/O,而在向客戶端發出回應之前,應用程式內部並不需要進行非常複雜的處理的時候,Node.js非常適合。 Node.js也非常適合與web socket配合,開發長連接的即時互動應用程式。
Node.js不是一種獨立的語言,與PHP、JSP、Python、Perl、Ruby的「既是語言,也是平台」不同,Node.js的使用JavaScript進行編程,運行在JavaScript引擎上(V8)。
以上是node.js底層是什麼語言的詳細內容。更多資訊請關注PHP中文網其他相關文章!