搞懂什么是Node.js原來這么簡(jiǎn)單
在 Node.js 的官方網(wǎng)站的首頁中,有這樣一句話來描述 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 運(yùn)行時(shí)。Node.js 采用事件驅(qū)動(dòng)、非堵塞 I/O 模型,使其輕量化和高效。
上面這句話的第一句說明了什么是 Node.js,第二句說明了 Node.js 的特點(diǎn)。
想要搞懂官方這句話的具體含義,我們還要從 JavaScript 語言說起。
Node.js 的核心開發(fā)語言這里假設(shè)你已經(jīng)掌握了 JavaScript 語言的基礎(chǔ)語法以及基本使用。如果還沒有掌握 JavaScript 的話,還是先去入門一下 JavaScript 語言吧。
掌握了 JavaScript 語言的應(yīng)該知道,JavaScript 語言是作為瀏覽器的腳本語言,可以實(shí)現(xiàn)網(wǎng)頁與用戶之間的交互。
什么是交互?比如用戶在網(wǎng)頁中輸入用戶名或密碼,這種用戶輸入行為就可以叫做交互。或者用戶點(diǎn)擊網(wǎng)頁中的按鈕等等,都可以叫做交互。
JavaScript 語言之所以可以實(shí)現(xiàn)網(wǎng)頁與用戶之間的交互,主要是依靠事件來完成的。比如,用戶的輸入事件、點(diǎn)擊按鈕事件等等。
下面我們通過用戶點(diǎn)擊按鈕的行為為例,來看看 JavaScript 語言是如何處理的。
通過上面的分析圖,我們可以清晰的看到:
用戶點(diǎn)擊網(wǎng)頁的按鈕,執(zhí)行 JavaScript 邏輯。 JavaScript 邏輯經(jīng)歷三個(gè)階段,分別是捕獲事件、觸發(fā)事件和事件冒泡。 當(dāng) JavaScript 邏輯執(zhí)行完畢后,會(huì)將結(jié)果返回網(wǎng)頁。 網(wǎng)頁再根據(jù)結(jié)果顯示給用戶。通過這樣的一個(gè)小案例,我們可以知道 JavaScript 語言處理網(wǎng)頁與用戶之間的交互,主要是依靠事件驅(qū)動(dòng)。
網(wǎng)頁與 Node.js 中 JavaScript 的區(qū)別目前幾乎所有的瀏覽器都支持 JavaScript 語言,之所以支持的原因在于瀏覽器中都集成了 JavaScript 引擎。
在眾多瀏覽器中,Chrome 瀏覽器的性能相對(duì)更好,而且 Chrome 瀏覽器集成的 V8 JavaScript 引擎還是開源的。
而 Node.js 就是利用了 Chrome 瀏覽器的開源 V8 JavaScript 引擎。那在網(wǎng)頁中使用 JavaScript 語言和在 Node.js 中使用 JavaScript 語言有什么不同呢?我們可以通過下面這張圖來了解一下。
通過上圖可以清晰地看到,Node.js 相對(duì)于瀏覽器 Node.js 沒有提供 WebKit 內(nèi)核和 HTML 相關(guān)的 UI 技術(shù)。也就是說,Node.js 只提供了 JavaScript 語言。
為什么要這樣呢?其實(shí),Node.js 的作者最初的想法就是想設(shè)計(jì)一個(gè)輕量和高效的服務(wù)器。
什么是服務(wù)器那服務(wù)器又是什么呢?如果把一個(gè) WEB 應(yīng)用比作是一個(gè)人的話,那服務(wù)器就是人的大腦。
通過上面的圖我們可以知道,人與人交流時(shí),基本上要通過以下幾個(gè)步驟:
別人與我交流,我是通過人的感官進(jìn)行接收。 感官將信息傳遞給大腦。 大腦接收到信息后,進(jìn)行處理,將處理的結(jié)果返回。 再通過感官反饋給與我交流的人。通過這個(gè)過程,我們可以發(fā)現(xiàn),別人是直接通過感官與我交流的,并不知道大腦是如何工作的,也并不關(guān)心大腦是如何工作的。
而 WEB 應(yīng)用與人類似,用戶是與網(wǎng)頁進(jìn)行交互,網(wǎng)頁將信息傳遞給服務(wù)器,服務(wù)器接收、處理并響應(yīng),最后網(wǎng)頁將結(jié)果顯示給用戶。
作為用戶來說,并不關(guān)心服務(wù)器是如何工作的,甚至用戶都感覺不到服務(wù)器的存在。但是,作為開發(fā)人員,想要開發(fā)一個(gè)完整的 WEB 應(yīng)用,服務(wù)器的邏輯核心。
從現(xiàn)在開始,我們要從用戶思維轉(zhuǎn)變成開發(fā)思維。通過開發(fā)思維重新審視我們?cè)?jīng)使用過的 WEB 應(yīng)用,你會(huì)發(fā)現(xiàn)有所不同。
思維的轉(zhuǎn)變是很重要的!很重要的!很重要的!重要的事兒說三遍。
Node.js 的簡(jiǎn)單理解講到這里,我們可以簡(jiǎn)單地來歸納一下 Node.js 到底是什么了。
Node.js 就是基于 Chrome 瀏覽器的 V8 JavaScript 引擎,以 JavaScript 語言為核心開發(fā)語言的服務(wù)器技術(shù)。
如果使用 Node.js 開發(fā)一個(gè) WEB 應(yīng)用應(yīng)該是怎么樣的呢?
由于 JavaScript 邏輯是依靠事件驅(qū)動(dòng)的,所以就不難理解 Node.js 是事件驅(qū)動(dòng)的了。
想要更好地理解和掌握 Node.js,還是先回去惡補(bǔ)一下 JavaScript 語言中的事件處理那些內(nèi)容吧!
Node.js 除了是基于 Chrome 瀏覽器的 V8 引擎以外,還提供了一系列的模塊,讓我們可以方便地實(shí)現(xiàn)一些功能。比如,處理客戶端的請(qǐng)求、文件的處理等操作。
我們學(xué)習(xí) Node.js,主要就是學(xué)習(xí) Node.js 所提供的模塊內(nèi)容。
以上就是搞懂什么是Node.js原來這么簡(jiǎn)單的詳細(xì)內(nèi)容,更多關(guān)于Node.js的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. IntelliJ IDEA設(shè)置默認(rèn)瀏覽器的方法2. idea設(shè)置提示不區(qū)分大小寫的方法3. HTTP協(xié)議常用的請(qǐng)求頭和響應(yīng)頭響應(yīng)詳解說明(學(xué)習(xí))4. IntelliJ IDEA創(chuàng)建web項(xiàng)目的方法5. VMware中如何安裝Ubuntu6. ASP.NET MVC通過勾選checkbox更改select的內(nèi)容7. .NET SkiaSharp 生成二維碼驗(yàn)證碼及指定區(qū)域截取方法實(shí)現(xiàn)8. CentOS郵件服務(wù)器搭建系列—— POP / IMAP 服務(wù)器的構(gòu)建( Dovecot )9. docker容器調(diào)用yum報(bào)錯(cuò)的解決辦法10. django創(chuàng)建css文件夾的具體方法
