本文整理自我初學Node.js 時的筆記,用以向對Node.js 這門語言有興趣的讀者簡明扼要的介紹Node.js 是什麼,以及該如何學習這門語言。
Node.js 是Ryan Dahl 在2009 年為了解決Web 伺服器高並發問題而開發的基於Chrome V8 引擎的JavaScript 運行時環境。
從這個定義中,可以看到Node.js 的三個關鍵特徵:
目的是為了解決Web 伺服器高並發問題;
根基底是 Chrome V8 引擎;
本質上是一個JavaScript 執行環境;
因此,要搞清楚什麼是Node.js,首先就要搞清楚以上三個關鍵特徵。 【相關教學推薦:nodejs影片教學、程式設計教學】
Ryan Dahl 在設計Node 之前,一直致力於解決Web 伺服器高並發引起的效能問題,根據工作經驗,他認為效能問題的瓶頸在於阻塞的I/O 操作。適逢Chrome 推出了高效能的V8 引擎,Ryan Dahl 認為JavaScript 天然的異步,事件委託機制以及JavaScript 語言在服務端無歷史包袱的特性,非常適合透過非同步流程控制的方式提升大型分散式系統性能。於是,Node.js 應運而生。
儘管現在 Node.js 已經被應用於各種各樣的場景。但我們始終應該要體認到,理解 Node.js 的非同步流程控制原理才算是掌握了 Node.js 的核心。
Chrome 核心基於WebKit,分成以下兩個引擎:
而Google 由於不滿意JavaScript Core 的效能,於是自主研發了效能較好的V8 引擎所取代。
作為JavaScript 的解釋引擎,V8 引擎的主要功能在於:
#解釋與編譯JavaScript;
堆管理;
處理記憶體垃圾回收;
處理記憶體分配;
JavaScript 執行環境。
那麼什麼是JavaScript 執行環境 呢?顧名思義,是一個可以運行 JavaScript 的環境。那這裡的環境是指什麼呢?主要包含以下兩個面向:
libuv ** 所提供。
libuv 是一個跨平台的,事件驅動的非同步I/O 函式庫,為Node 提供了CPU 和作業系統層面的功能。我們知道不同的作業系統調度硬體的方式不同,CPU 的指令集也各有差異。
libuv 則抹平了這個差異,透過名為
Node Bindings 的模組,向使用者暴露了統一的系統操作介面。
libuv 。這兩層隱藏在
Node Bindings 之下,而使用者面向
Node Bindings 進行程式設計。
非同步流程控制原理之外,我們也需要了解下Node.js 從創始到發展所彰顯的設計哲學,這有利於我們更喜歡Node.js 生態。
我認為Node.js 有以下三大特點:
開放;
專注;
讓我分別解釋。
。
Node 社群的開發者始終保留著一個默契,將套件的功能約束的足夠窄,最好一次只做好一件事,並對外暴露單一的介面。這樣包的開發,設計,測試就會變得更簡單,包也就更可靠。這種專注,也同時表現了開發者們的謙遜以及效率至上。
Node 套件通常只暴露單一模組和接口,並繼承了 JavaScript 的簡約特點,使用簡單的資料結構。這使得 Node 套件易於閱讀和理解。
以上是淺析前端開發者要如何學習Node語言?的詳細內容。更多資訊請關注PHP中文網其他相關文章!