搞懂什麼是Node.js原來這麼簡單

Node.js 的官方介紹

在 Node.js 的官方網站的首頁中,有這樣一句話來描述 Node.js:

Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.

翻譯過來的意思就是:

Node.js 是基於 Chrome 的 V8 JavaScript 引擎的 JavaScript 運行時。Node.js 采用事件驅動、非堵塞 I/O 模型,使其輕量化和高效。

上面這句話的第一句說明瞭什麼是 Node.js,第二句說明瞭 Node.js 的特點。

想要搞懂官方這句話的具體含義,我們還要從 JavaScript 語言說起。

Node.js 的核心開發語言

這裡假設你已經掌握瞭 JavaScript 語言的基礎語法以及基本使用。如果還沒有掌握 JavaScript 的話,還是先去入門一下 JavaScript 語言吧。

掌握瞭 JavaScript 語言的應該知道,JavaScript 語言是作為瀏覽器的腳本語言,可以實現網頁與用戶之間的交互。

什麼是交互?比如用戶在網頁中輸入用戶名或密碼,這種用戶輸入行為就可以叫做交互。或者用戶點擊網頁中的按鈕等等,都可以叫做交互。

JavaScript 語言之所以可以實現網頁與用戶之間的交互,主要是依靠事件來完成的。比如,用戶的輸入事件、點擊按鈕事件等等。

下面我們通過用戶點擊按鈕的行為為例,來看看 JavaScript 語言是如何處理的。

通過上面的分析圖,我們可以清晰的看到:

  1. 用戶點擊網頁的按鈕,執行 JavaScript 邏輯。
  2. JavaScript 邏輯經歷三個階段,分別是捕獲事件、觸發事件和事件冒泡。
  3. 當 JavaScript 邏輯執行完畢後,會將結果返回網頁。
  4. 網頁再根據結果顯示給用戶。

通過這樣的一個小案例,我們可以知道 JavaScript 語言處理網頁與用戶之間的交互,主要是依靠事件驅動。

網頁與 Node.js 中 JavaScript 的區別

目前幾乎所有的瀏覽器都支持 JavaScript 語言,之所以支持的原因在於瀏覽器中都集成瞭 JavaScript 引擎。

在眾多瀏覽器中,Chrome 瀏覽器的性能相對更好,而且 Chrome 瀏覽器集成的 V8 JavaScript 引擎還是開源的。

而 Node.js 就是利用瞭 Chrome 瀏覽器的開源 V8 JavaScript 引擎。那在網頁中使用 JavaScript 語言和在 Node.js 中使用 JavaScript 語言有什麼不同呢?我們可以通過下面這張圖來瞭解一下。

通過上圖可以清晰地看到,Node.js 相對於瀏覽器 Node.js 沒有提供 WebKit 內核和 HTML 相關的 UI 技術。也就是說,Node.js 隻提供瞭 JavaScript 語言。

為什麼要這樣呢?其實,Node.js 的作者最初的想法就是想設計一個輕量和高效的服務器。

什麼是服務器

那服務器又是什麼呢?如果把一個 WEB 應用比作是一個人的話,那服務器就是人的大腦。

通過上面的圖我們可以知道,人與人交流時,基本上要通過以下幾個步驟:

  1. 別人與我交流,我是通過人的感官進行接收。
  2. 感官將信息傳遞給大腦。
  3. 大腦接收到信息後,進行處理,將處理的結果返回。
  4. 再通過感官反饋給與我交流的人。

通過這個過程,我們可以發現,別人是直接通過感官與我交流的,並不知道大腦是如何工作的,也並不關心大腦是如何工作的。

而 WEB 應用與人類似,用戶是與網頁進行交互,網頁將信息傳遞給服務器,服務器接收、處理並響應,最後網頁將結果顯示給用戶。

作為用戶來說,並不關心服務器是如何工作的,甚至用戶都感覺不到服務器的存在。但是,作為開發人員,想要開發一個完整的 WEB 應用,服務器的邏輯核心。

從現在開始,我們要從用戶思維轉變成開發思維。通過開發思維重新審視我們曾經使用過的 WEB 應用,你會發現有所不同。

思維的轉變是很重要的!很重要的!很重要的!重要的事兒說三遍。

Node.js 的簡單理解

講到這裡,我們可以簡單地來歸納一下 Node.js 到底是什麼瞭。

Node.js 就是基於 Chrome 瀏覽器的 V8 JavaScript 引擎,以 JavaScript 語言為核心開發語言的服務器技術。

如果使用 Node.js 開發一個 WEB 應用應該是怎麼樣的呢?

由於 JavaScript 邏輯是依靠事件驅動的,所以就不難理解 Node.js 是事件驅動的瞭。

想要更好地理解和掌握 Node.js,還是先回去惡補一下 JavaScript 語言中的事件處理那些內容吧!

Node.js 除瞭是基於 Chrome 瀏覽器的 V8 引擎以外,還提供瞭一系列的模塊,讓我們可以方便地實現一些功能。比如,處理客戶端的請求、文件的處理等操作。

我們學習 Node.js,主要就是學習 Node.js 所提供的模塊內容。

以上就是搞懂什麼是Node.js原來這麼簡單的詳細內容,更多關於Node.js的資料請關註WalkonNet其它相關文章!

推薦閱讀: