指令碼語言需要一個解析器才能執行,JavaScript是指令碼語言,在不同的位置有不一樣的解析器,如寫入html的js語言,瀏覽器是它的解析器角色。而對於需要獨立執行的js,nodejs就是一個解析器。
每一種解析器都是一個執行環境,不但允許js定義各種資料結構,進行各種計算,還允許js使用允許環境提供的內建物件和方法做一些事情。如執行在瀏覽器中的js的用途是操作DOM,瀏覽器就提供了document之類的內建物件。而執行在nodejs中的js的用途是操作磁碟檔案或搭建http伺服器,nodejs就相應提供了fs,http等內建物件。
NodeJS的作者說,他創造NodeJS的目的是為了實現高效能Web伺服器,他首先看重的是事件機制和非同步IO模型的優越性,而不是JS。但是他需要選擇一種程式語言實現他的想法,這種程式語言不能自帶IO功能,並且需要能良好支援事件機制。JS沒有自帶IO功能,天生就用於處理瀏覽器中的DOM事件,並且擁有一大群程式設計師,因此就成為了天然的選擇。
如他所願,NodeJS在服務端活躍起來,出現了大批基於NodeJS的Web服務。而另一方面,NodeJS讓前端眾如獲神器,終於可以讓自己的能力覆蓋範圍跳出瀏覽器視窗,更大批的前端工具如雨後春筍。
因此,對於前端而言,雖然不是人人都要拿NodeJS寫一個伺服器程式,但簡單可至使用命令互動模式除錯JS程式碼片段,複雜可至編寫工具提升工作效率。
…未完待續,歡迎各路大神來補充乾貨。感激不盡!