首頁  >  文章  >  web前端  >  node.js的引擎是什麼

node.js的引擎是什麼

青灯夜游
青灯夜游原創
2022-03-22 18:25:362821瀏覽

node.js的引擎是「Chrome V8」。 Node.js主要由Chrome V8引擎、標準函式庫和本機模組組成;其中,V8引擎負責解析和執行JavaScript程式碼,它將JS程式碼直接編譯成原生機器碼,並且使用快取機制來提高效能。

node.js的引擎是什麼

本教學操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。

nodejs是什麼?

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運作環境。

Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量且有效率。

簡單的說 Node.js 就是運行在服務端的 JavaScript,利用JavaScript在服務端進行程式設計。

Node.js是一個讓JavaScript運行在伺服器端的開發平台,它讓JavaScript的觸角伸到了伺服器端,可以與PHP、JSP、Python、Ruby平起平坐。

Node.js不是一種獨立的語言,與PHP、JSP、Python、Perl、Ruby的「既是語言,也是平台」不同,Node.js使用JavaScript進行編程,運行在JavaScript引擎上( V8)。

nodejs開發的構成就成利用npm開發的社群提供的大量的第三方套件加上基本的ECMAScript腳本語言以及node平台提供的一系列程式介面進行程式設計。

Node.js 的組成

Node.js 執行階段主要由V8 引擎、標準函式庫和本機模組組成,尤其是本機模組的多少,從底層決定了Node.js 功能的強弱。

1) V8 引擎

V8 引擎是 JavaScript 解譯器,它負責解析並執行 JavaScript 程式碼。

V8 引擎借鑒了Java 虛擬機器和C 編譯器的眾多技術,它將JavaScript 程式碼直接編譯成原生機器碼,並且使用了快取機制來提高效能,這使得JavaScript 的運行速度可以媲美二進位程式.

2) 本地模組

##Node.js 整合了眾多高效能的開源函式庫,它們使用C/C 語言實現,例如:

模組說明libuv一個跨平台的、基於事件驅動的非同步I/O 函式庫。但是 libuv 不僅限於 I/O,它還提供了進程管理、線程池、訊號處理、定時器等其它功能。 nmpNode.js 套件管理器,可下載套件、安裝套件、卸載套件、更新套件、上傳套件等。 http_parser一款由C語言編寫的輕量級 HTTP 解析器,以支援 Web 應用開發。 zlib工業級的資料壓縮/解壓縮模組,Nodejs 借助 zlib 來建立同步、非同步或串流的壓縮/解壓縮介面。 OpenSSL該模組提供了經過嚴密測試的許多加密/解密功能,現代 Web 依賴這些功能來實現安全性,例如 SSL 協定和 https 協定。 c-ares非同步 DNS 查詢和解析函式庫。

Node.js 直接在電腦上執行 JavaScript 程式碼,並且要賦予 JavaScript 強大的能力,所以它的本機模組和瀏覽器中的執行時間有很多大區別,甚至說幾乎沒有什麼關聯。 Node.js 幾乎完全拋棄了瀏覽器,自己從頭開始建立了一套全新的 JavaScript 執行階段。

3) 標準函式庫

本機模組使用C/C 編寫,而Node.js 面向JavaScript 開發人員,所以必須要封裝本機模組的C/C 接口,提供一套優雅的JavaScript 介面給開發人員,並且要保持介面在不同平台(作業系統)上的一致性。

這套 JavaScript 接口,就是 Node.js 標準函式庫。標準函式庫是否優雅和強大,決定了 Node.js 的易用性,直接影響 Node.js 的市場表現。

小結

V8 引擎和眾多本地模組都是現成的,別人已經造好了輪子,Node.js 的主要工作就是選擇合適的模組,將它們整合在一起,並編寫好JavaScript 介面。

當然,並不是所有的本地模組都能找到合適的,Node.js 也自己寫了幾個模組,典型的代表就是 Libuv。 Libuv 是 Node.js 最核心最基礎的模組,Node.js 完全基於 Libuv 而建構。

你可能聽過Node.js 採用了基於事件的、單執行緒的非同步I/O 架構,這是Node.js 最大的特點,也是它和其它腳本語言最大的區別,Node. js 的這種能力就是依賴Libuv 來實現的。

Libuv 如此強大,官方決定將它從 Node.js 中剝離出來,作為一個單獨的網路庫發布,並且開源免費。現在的 Libuv 已經變得非常流行,和傳統的 Libevent 和 libev 庫並稱為「C/C 三大網路庫」。

Node.js 之所以大名鼎鼎,主要是因為它採用了V8 引擎和Libuv 庫:V8 引擎保證了Node.js 運行高效,Libuv 庫提供了基於事件循環的異步I/O能力。

總結

Node.js 是一個JavaScript 執行時,它讓JavaScript 脫離了瀏覽器環境,可以直接在電腦上執行,大大拓展了JavaScript 用途。我們應該將 JavaScript 和 Python、Java、Ruby 等其它程式語言同等對待,不能再將它視為一種「小玩意」。

最後我們來總結一下JavaScript 和Node.js 的歷史:

  • #Netscape 瀏覽器衍生出了JavaScript 腳本,賦予網頁程式設計能力;

  • Chrome 瀏覽器衍生了V8 引擎,提高了JavaScript 效能;

  • V8 引擎建立了Node.js,拓展了JavaScript 的程式設計能力;

  • Node.js 衍生了Libuv 函式庫,為網頁開發增加了一個優秀的工具。

更多node相關知識,請造訪:nodejs 教學


Linux 中一切皆文件,這裡的 I/O 不只包括文件讀寫,還包括資料庫讀寫、網路通訊(socket)等。

以上是node.js的引擎是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn