V8是Google Chrome使用的JavaScript引擎的名稱。它是在使用Chrome瀏覽時將我們的JavaScript代碼執行的關鍵。V8提供了JavaScript執行的運行時環境,瀏覽器提供DOM和其他Web平台API。
V8是Google Chrome使用的JavaScript引擎的名稱。它是在使用Chrome瀏覽時將我們的JavaScript代碼執行的關鍵。
V8提供了JavaScript執行的運行時環境。DOM和其他Web平台API由瀏覽器提供。
有趣的是,JavaScript引擎獨立於其托管的瀏覽器。這一重要功能使得Node.js崛起成為可能。2009年,V8被選為Node.js的引擎,隨著Node.js的普及,V8成為用JavaScript編寫的大量服務器端代碼的引擎。
Node.js生態系統龐大,並且多得如Electron等項目,V8也負責為桌面應用程序提供支持。
其他JS引擎
其他瀏覽器都有自己的JavaScript引擎:
- Firefox使用Spidermonkey
- Safari使用JavaScriptCore(也稱為Nitro)
- Edge使用Chakra
還有許多其他引擎。
所有這些引擎都實現了ECMA ES-262標準,也稱為ECMAScript,這是JavaScript使用的標準。
追求性能
V8是用C++編寫的,並且不斷改進。它可以在Mac、Windows、Linux和其他幾個系統上運行。
在這篇V8介紹中,我將忽略V8的具體實現細節,這些可以在更權威的網站(如V8官方網站)上找到,而且這些細節會隨時間變化,有時甚至發生很大的變化。
V8一直在不斷發展,就像其他JavaScript引擎一樣,以加快Web和Node.js生態系統的速度。
在Web上,多年來一直在追求性能,我們(作為用户和開發人員)從這場競爭中受益良多,因為我們每年獲得更快、更優化的機器。
編譯
JavaScript通常被認為是一種解釋語言,但現代JavaScript引擎不僅僅解釋JavaScript,還進行編譯。
這一點可以追溯到2009年,當時Firefox 3.5添加了SpiderMonkey JavaScript編譯器,之後其他瀏覽器也紛紛效仿。
V8內部使用即時編譯(JIT編譯)對JavaScript進行編譯以加快執行速度。
這可能似乎有些反直觀,但自2004年Google地圖推出以來,JavaScript已經從一種通常執行幾十行代碼的語言發展成為浏覽器中運行數千行到數十萬行完整應用程序的語言。
現在我們的應用程序可以在瀏覽器中運行數小時,而不僅僅是幾個表單驗證規則或簡單的腳本。
在這個新世界中,編譯JavaScript完全有道理,因為儘管稍微花點時間準備JavaScript,但一旦準備完畢,它將比純粹解釋的代碼更高效。