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相關知識,請造訪:nodejs 教學!
以上是nodejs是哪個平台的詳細內容。更多資訊請關注PHP中文網其他相關文章!