什麼是 Chrome V8?

Chrome V8 執行 JavaScript 代碼。Node.js 構建於 Chrome V8 之上,是一種廣泛使用的針對無伺服器 JavaScript 功能的執行階段環境。但是,直接在 V8 上執行功能有很多優點。

學習目標

閱讀本文後,您將能夠:

  • 定義 JavaScript 引擎
  • 瞭解 Chrome V8 和 Node.js
  • 瞭解 Chrome V8 在無伺服器架構中可起到的作用

複製文章連結

什麼是 Chrome V8?

Chrome V8 是 JavaScript 引擎,這意味著它執行 JavaScript 代碼。最初,JavaScript 是為了在 Web 瀏覽器上執行而編寫的。Chrome V8(或簡稱 V8)可以在瀏覽器內部或外部執行 JavaScript 代碼,從而使伺服器端指令碼成為可能。

像 V8(八缸)汽車發動機一樣,Chrome V8 快速而強大。V8 將 JavaScript 代碼直接轉換為機器代碼*以便電腦能真正理解代碼,然後執行轉換或編譯後的代碼。V8 還最佳化了 JavaScript 執行。

*機器代碼是 CPU 可理解的語言。它是純數位的,意味著由數字組成。

編譯是什麼意思?

編譯是將代碼從一種程式設計語言轉換為另一種程式設計語言的過程。通常,編譯器會將代碼從較高的抽象級別轉換為較低的抽象級別,比如從 JavaScript 之類的人類可用語言轉換為機器可讀代碼。

Chrome V8 執行所謂的即時編譯。它不預先編譯 JavaScript,而是在執行代碼的同時對其進行編譯。

什麼是沙箱?

Chrome V8 沙箱技術

「沙箱」是一種執行軟體的環境,它與其他環境(包括同一台電腦上的其他環境)隔離並區分開來。

沙箱是 Chrome V8 的一項關鍵功能。每個處理序都放入沙箱,以確保 JavaScript 功能在沙箱中單獨執行,並且執行一段代碼時不會影響任何其他代碼。(許多沙箱企業產品在隔離的虛擬機器中開啟並執行可執行檔,而 V8 沙箱技術與它們不同,不會降低效能。)

什麼是 Node.js?

Node.js 是用於執行 JavaScript 代碼的執行階段環境*,基於 Chrome V8 引擎構建而成。它是非同步的,這意味著它不必等待一個處理序完成,即可啟動另一個處理序。與 V8 一樣,Node.js 免費且開放原始碼。與 V8 不同的是,它沒有內建沙箱技術。

(熟悉 JavaScript 的人會注意到副檔名是「.js」;不過,這只是透過一個美觀的執行階段環境名稱表明其與 JavaScript 相關,並不表示 Node.js 是 JavaScript 檔案。)

*執行階段環境是指執行代碼的軟體環境。

為什麼 V8 和 Node.js 對於無伺服器運算很重要?

無伺服器功能需要透過某種方式,在受到觸發時開始執行。一些無伺服器運算廠商提供 Node.js 作為無伺服器 JavaScript 功能的執行階段環境(針對其他語言使用其他執行階段環境)。

Cloudflare Workers 直接在 V8 上執行。這有幾個原因。原因之一是最近未使用過的功能的執行速度。冷啟動在無伺服器運算中是一個問題,但在 V8 上執行功能時,通常可以在 5 毫秒或更短的時間內「啟動」並執行這些功能。(Node.js 的開銷更大,通常會花費幾毫秒的時間。)另一個原因是 V8 會自動在沙箱中執行 JavaScript 功能 ,從而提高安全性