您好,登錄后才能下訂單哦!
本篇內容主要講解“Node.js運行時由哪些模塊組成”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Node.js運行時由哪些模塊組成”吧!
nodejs是基于Chrome JavaScript運行時建立的一個平臺,是讓JavaScript可以運行在服務端的開發平臺,主要用于方便地搭建響應速度快、易于擴展的網絡應用。
本教程操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。
Node.js 是一個基于Chrome JavaScript 運行時建立的一個平臺,是 讓JavaScript 運行在服務端的開發平臺,它讓JavaScript成為與PHP、Python、Perl、Ruby等服務端語言平起平坐的腳本語言。
Node.js是一個事件驅動I/O服務端JavaScript環境,基于Google的V8引擎,V8引擎執行Javascript的速度非常快,性能非常好。
Node.js用于方便地搭建響應速度快、易于擴展的網絡應用。
運行時是什么?
所謂運行時,就是程序在運行期間需要依賴的一系列組件或者工具;把這些工具和組件打包在一起提供給程序員,程序員就能運行自己編寫的代碼了。
對于 JavaScript 來說,它在運行期間需要依賴以下組件:
1) 解釋器
JavaScript 是一種腳本語言,需要一邊解釋一邊運行,用到哪些源代碼就編譯哪些源代碼,整個過程由解釋器完成。沒有解釋器的話,JavaScript 只是一堆純文本文件,不能被計算機識別。
2) 標準庫
我們在 JavaScript 代碼中會調用一些內置函數,這些函數不是我們自己編寫的,而是標準庫自帶的。
3) 本地模塊
所謂本地模塊,就是已經被提前編譯好的模塊,它們是二進制文件,和可執行文件在內部結構上沒有什么區別,只是不能單獨運行而已。這些本地模塊其實就是動態鏈接庫(在 Windows 下是 .dll 文件),如果你使用過C語言、C++ 等編譯型語言,那你應該能夠更好地理解它。
JavaScript 的很多功能都需要本地模塊的支持,比如:
Cookie 用于存儲少量的用戶數據,它是用戶計算機上的一種小文件,使用 Cookie 必須有文件操作模塊的支持。
Ajax 可以借助互聯網從服務器請求數據,這是一種網絡操作,必須有網絡庫的支持。
一步一步跟蹤代碼的執行流程,從中發現邏輯錯誤,這個過程叫做調試,需要有調試器(Debugger)的支持。
JavaScript 可以操作 HTML,這需要 HTML 解析模塊提前構建起 DOM 樹。
本地模塊一般封裝了通用功能,對性能要求較高,所以通常使用編譯型語言來實現,比如C語言、C++、匯編語言等。
JavaScript 解釋器需要本地模塊的支持,標準庫在編寫時也會調用本地模塊的接口,而我們編寫的 JavaScript 代碼一般不會直接使用本地模塊,所以 Web 前端程序員觸及不到它們。
本地模塊是幕后英雄,它不顯山露水,但是又不可或缺。
總結
解釋器、標準庫、本地模塊等各種組件/工具共同支撐了 JavaScript 代碼的運行,它們統稱為 JavaScript 運行時。
在 Node.js 之前,JavaScript 運行時被綁定在瀏覽器中,作為瀏覽器的各種模塊出現。這意味著,要想運行 JavaScript 代碼就必須啟動瀏覽器,JavaScript 逃不出瀏覽器的手掌心,它的功能受到很大的限制,只能作為網頁腳本使用。
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,它還提供了進程管理、線程池、信號處理、定時器等其它功能。 Linux 中一切皆文件,這里的 I/O 不僅僅包括文件讀寫,還包括數據庫讀寫、網絡通信(socket)等。 |
nmp | Node.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 的市場表現。
到此,相信大家對“Node.js運行時由哪些模塊組成”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。