一、Javascript的引擎
瀏覽器一般有兩個引擎,一個是Html引擎,一個是腳本引擎。
JavaScript是一種腳本語言,最初用於瀏覽器的動態顯示,方便操作頁面數據和內容。但實際上,它也可以在瀏覽器外運行(如服務器端),就像C、C++、Java語言一樣,因此,它是一種開發語言。
我們知道,Java的運行環境是Jvm,而JavaScript的運行環境是JavaScript引擎。
但JavaScript沒有標准的運行環境(或稱為引擎),我們所熟知的瀏覽器都有各自的腳本引擎,如:Mozilla的引擎叫TraceMonkey;Safari的引擎叫Squirrelfish Extreme,Google Chrome的引擎目前是V8(可能是最新版本,但我也不清楚,因為2009年Node.js誕生時,就用的是V8引擎)
總結:JavaScript運行在腳本引擎下。
二、Node.js是什么
后來由於Google Chrome V8引擎的出現,大大提高了JavaScript的運行效率(幾乎與本地代碼有一樣的執行效率),使人們看到了腳本語言的強大。基於這個原因,CommonJs誕生,並試圖制定一套JavaScript規范,使其可以應用在普通應用程序。CommonJs的終極目標是制定一套像C++類庫一樣的規范,使各類應用可以像調用C++標准庫一樣,調用JavaScript標准庫。
而Node.js就是實現了部分CommonJs規范的一個服務器端應用(非瀏覽器應用)。
因此很重要的一個概念就是,Node.js是一個應用,而不是一個JavaScript運行環境。它像瀏覽器一樣,可以解析執行JavaScript腳本,但不是運行在瀏覽器環境下,而是運行在操作系統環境下。或者說它和瀏覽器是一個並列的性質,都是操作系統下的一個應用。
Node.js的一個目標是成為像Apache一樣的應用服務器,並要比它的性能更高。
總結:Node.js是一個Web應用服務器。
三、Node.js與Javascript的關系
Node.js與瀏覽器端的Javascript(尤其是像現在的Vue.js等前端開發工具),沒有一毛錢的關系。
總結:Node.js與瀏覽器端的JavaScript沒有任何關系。
以上很多概念來自於《Node.js開發指南》一書,但不是原文摘抄,是以自己的理解和便於初學者理解做的解釋。本文主要用於理解Node.js是做什么的,作為自己的一個學習記錄,如有不同見解,歡迎大家留言。