Nodejs的Javascript運行時引擎是Chrome V8。node
JavaScript引擎
實現,最初由一些語言方面專家設計,後被谷歌收購,隨後谷歌對其進行了開源
。使用C++開發
,在運行JavaScript以前,相比其它的JavaScript的引擎轉換成字節碼或解釋執行,V8將其編譯成原生機器碼
(IA-32, x86-64, ARM, or MIPS CPUs),而且使用瞭如內聯緩存
(inline caching)等方法來提升性能
。支持衆多操做系統
,如windows
、linux
、android
等,也支持其餘硬件架構
,如IA32,X64,ARM等,具備很好的可移植
和跨平臺特性
。這裏先說一下什麼是編譯型語言和解釋性語言:android
編譯型語言
: 在程序執行以前必須進行專門的編譯過程,有以下特色:windows
只須編譯一次
就能夠把源代碼編譯成機器語言
,後面的執行無須從新編譯
,直接使用以前的編譯結果就能夠;所以其執行的效率比較高
;不一樣平臺對編譯器影響較大。緩存
解釋性語言
- 解釋行語言,支持動態類型,弱類型,在程序運行的時候才進行編譯,而編譯前須要肯定變量的類型,效率比較低,對不一樣系統平臺有較大的兼容性.架構
源代碼不能直接翻譯成機器語言
,而是先翻譯成中間代碼
,再由解釋器
對中間代碼進行解釋運行
;性能
程序不須要編譯
,程序在運行時才翻譯成機器語言,每執行一次都要翻譯一次
;Python
、JavaScript
、Shell、Ruby、MATLAB等;效率
通常相對比較低
,依賴解釋器
,跨平臺性好;比較
:優化
編譯性語言的運行效率比解釋性語言更高
;可是不能一律而論,部分解釋性語言的解釋器經過在運行時動態優化代碼,甚至能使解釋性語言的性能超過編譯性語言;進過以上說明,解釋性語言,運行效率低
,隨着Web相關技術的發展,JavaScript所要承擔的工做也愈來愈多,早就超越了「表單驗證」的範疇,這就更須要快速的解析和執行JavaScript腳本。V8引擎就是爲解決這一問題而生
,在node中也是採用該引擎來解析JavaScript。spa
Nodejs 實際上就是一個使用C++完成的程序,其能執行JavaScript代碼,它的底層主要由兩部分第三方庫組成 —— Chrome V8 和 libuv操作系統