這些東西有些比較常用,有些僅知道個名稱,但無論是熟悉還是陌生的,要比較精確地解釋這些東西,是有一定的難度,可這些東西對前端開發非常重要,還是需要有明確的概念。 PS:內容點到即止,不然一個東西一篇文章都寫不完。 整體認識 在學習方法上,對於互有聯繫的東西,有一個整體的印象,比起一個個瑣碎的認識更為重 ...
這些東西有些比較常用,有些僅知道個名稱,但無論是熟悉還是陌生的,要比較精確地解釋這些東西,是有一定的難度,可這些東西對前端開發非常重要,還是需要有明確的概念。
PS:內容點到即止,不然一個東西一篇文章都寫不完。
整體認識
在學習方法上,對於互有聯繫的東西,有一個整體的印象,比起一個個瑣碎的認識更為重要,所以標題上的概念,我更喜歡從整體上去認識。
PS:Chrome瀏覽器和Node的組件構成
從上圖可以看出,Node的結構與Chrome非常相似,Node選擇JavaScript為實現語言,V8為執行引擎,利用libuv實現基於事件驅動的非同步架構。
名詞解析
Chrome
一款網頁瀏覽器。
V8
V8(C++開發)是JavaScript的執行引擎,它將JavaScript編譯成原生機器碼(IA-32, x86-64, ARM, or MIPS CPUs),並且使用瞭如內聯緩存等方法來提高性能,運行速度媲美二進位程式。
sandbox
沙盒(sandbox)是一個 C++ 庫,它允許創建沙盒進程 (在非常嚴格的環境中執行的進程)。沙盒進程可以自由使用的資源僅僅是CPU周期和記憶體。例如,沙盒進程無法寫入磁碟或顯示自己的視窗。
PS:https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox_faq.md
Node
一個基於 Chrome V8 引擎的 JavaScript 運行環境。
Node是一個運行環境,最需要認識到的是這一點。有人可能會誤以為Node是一個前端工程的構建工具,這是不對的,它僅僅是Node的工具類應用,也有人認為Node是一個Web伺服器,雖然創建者最初的意圖確實是做這個,但隨著時間發展,它就不僅僅如此而已,更有人認為Node是一個命令行工具,但顯然是一個包含關係,而不等於。
libuv
一個專註於非同步 I / O 的跨平臺支持庫。
npm
npm是幫助Node完成第三方模塊的發佈、安裝和依賴的工具。
npm之於Node,相當於gem之於Ruby,pear之於PHP,Maven之於Java。
參考文獻
1、《深入淺出Node》by 田永強