中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.js運行時由哪些模塊組成

發布時間:2022-01-25 13:34:54 來源:億速云 閱讀:296 作者:iii 欄目:web開發

本篇內容主要講解“Node.js運行時由哪些模塊組成”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Node.js運行時由哪些模塊組成”吧!

nodejs是基于Chrome JavaScript運行時建立的一個平臺,是讓JavaScript可以運行在服務端的開發平臺,主要用于方便地搭建響應速度快、易于擴展的網絡應用。

Node.js運行時由哪些模塊組成

本教程操作環境: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運行時由哪些模塊組成”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石柱| 行唐县| 河北区| 新竹市| 微博| 历史| 耿马| 屏东市| 江北区| 新津县| 赣榆县| 密云县| 思南县| 黔西| 南汇区| 紫阳县| 睢宁县| 夹江县| 喀喇沁旗| 澄迈县| 普兰店市| 腾冲县| 南开区| 常山县| 威远县| 慈利县| 乌什县| 奇台县| 芒康县| 云林县| 石景山区| 舟曲县| 资中县| 儋州市| 华容县| 南漳县| 富锦市| 阿城市| 阿克| 公安县| 浑源县|