說起Node就不得不先介紹一個Chrome V8 引擎。
隨着Web相關技術的發展,JavaScript所要承擔的工作也越來越多,早就超越了“表單驗證”的范疇,這就更需要快速的解析和執行JavaScript腳本。 而JavaScript本質上是一種解釋型語言,與編譯型語言不同的是它需要邊執行邊解析,而編譯型語言在執行時已經完成編譯,可直接執行,有更快的執行速度。V8引擎就是為解決這一問題而生,在node中也是采用該引擎來解析JavaScript。
V8引擎是一個JavaScript引擎實現,最初由一些語言方面專家設計,后被谷歌收購,隨后谷歌對其進行了開源。V8使用C++開發,,在運行JavaScript之前,相比其它的JavaScript的引擎轉換成字節碼或解釋執行,V8將其編譯成原生機器碼(IA-32, x86-64, ARM, or MIPS CPUs),並且使用了如內聯緩存(inline caching)等方法來提高性能。有了這些功能,JavaScript程序在V8引擎下的運行速度媲美二進制程序。V8支持眾多操作系統,如windows、linux、android等,也支持其他硬件架構,如IA32,X64,ARM等,具有很好的可移植和跨平台特性。
另外,JavaScript引擎的執行過程大致是: 源代碼-→抽象語法樹-→字節碼-→JIT-→本地代碼(V8引擎沒有中間字節碼)。在2017年4月底,v8 發布了5.9 版本,在此版本中新增了一個 Ignition 字節碼解釋器,並默認開啟。做出這一改變的原因為:(主要動機)減輕機器碼占用的內存空間,即犧牲時間換空間;提高代碼的啟動速度;對 v8 的代碼進行重構,降低 v8 的代碼復雜度。
接着簡單介紹一下Node,官網:http://nodejs.cn/api/
Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。
Node對一些特殊用例進行優化,提供替代的API,使得V8在非瀏覽器環境下運行得更好。V8引擎執行Javascript的速度非常快,性能非常好。 Node是一個基於Chrome JavaScript運行時建立的平台, 用於方便地搭建響應速度快、易於擴展的網絡應用。Node 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分布式設備上運行數據密集型的實時應用。