Node.js的特點(diǎn)詳解
Node.js是一個(gè)基于Chrome v8引擎建立的Java運(yùn)行平臺(tái),用于搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。本文和大家分享的是Node.js的一些特點(diǎn),希望對(duì)大家學(xué)習(xí)Node.js有幫助。
異步I/O
這里,我們來(lái)詳細(xì)解釋一下:
異步是什么意思
比如說(shuō)你的爸,今天要叫你做些事情,比如說(shuō)你要做飯、洗衣服還有掃地,以及燒開(kāi)水等等一系列的事情。那么,就你一個(gè)人來(lái)說(shuō),你是不是得一件事一件事的挨個(gè)做完了之后,才能接著做下一件事。比如說(shuō),你是不是燒完開(kāi)水,然后才來(lái)掃地,掃完地然后再來(lái)煮飯,煮完飯,你可能才會(huì)做其他事情。那么這個(gè)過(guò)程,我們把它叫做同步的過(guò)程。你做一件事,你必須要等待,等待做完了之后,再做另外一件事。那么這個(gè)時(shí)候,如果我們懂得合理安排時(shí)間的話,我們可以這樣辦:我們?cè)跓_(kāi)水的時(shí)候,我們可以掃地,因?yàn)闊_(kāi)水不用我們守著嘛!只需要把水放好,或點(diǎn)燃就行了。然后,我們可以去做其他事情了。比如說(shuō),掃地,或者是洗衣服,等等一系列的事情我們都可以做。那么這樣,在做完了同樣的事情,但是我們所需要花費(fèi)的時(shí)間,它是不一樣的。你用后面這種方式,可能用的時(shí)間會(huì)更短,效率更高。而你用前面那種同步的方式,它的效率會(huì)更低。那么,后面這種事情,我們就把它叫做異步的操作。
事件與回調(diào)
如果你采用異步的方式來(lái)做事情,它的效率會(huì)很高,但是你同時(shí)只能做一個(gè)事情。比如說(shuō),你燒開(kāi)水的時(shí)候,雖然說(shuō)不用你守在那里。但是你掃地了過(guò)后,你這個(gè)水燒開(kāi)的時(shí)候,我怎么知道呢?(就是這件事做好了之后,我怎么知道呢?)
于是我們可以想一下,在這個(gè)水壺上面,給它放一個(gè)小喇叭,當(dāng)這個(gè)水燒開(kāi)了之后會(huì)冒蒸汽,當(dāng)這個(gè)蒸汽吹響這個(gè)喇叭的時(shí)候,我們就知道這個(gè)事情做好了,水燒開(kāi)了,我們就可以接著做水燒開(kāi)之后的事情了。
這個(gè)事件與回調(diào)就是:這個(gè)水燒開(kāi)了以后,它會(huì)以事件的形式來(lái)通知你(我這個(gè)事情做好了,你可以把這個(gè)水裝好了)。
回調(diào)是什么意思
當(dāng)它的事件發(fā)生了過(guò)后,它會(huì)通知你,那么你在裝水這個(gè)過(guò)程,就是在回調(diào)(就是處理這個(gè)過(guò)程)。處理完燒開(kāi)水過(guò)后的結(jié)果
單線程
這一點(diǎn)是node.js比較大的一個(gè)特點(diǎn)。它可以開(kāi)發(fā)出高效的后臺(tái)應(yīng)用(網(wǎng)絡(luò)應(yīng)用)
什么是單線程
還是用剛才那個(gè)例子。你爸叫你做很多件事情,如果你不懂的合理安排時(shí)間,你就只能用同步;那么同步的時(shí)候,你可能會(huì)這樣想:我叫我?guī)讉€(gè)小伙伴來(lái)幫我做這個(gè)事情(叫個(gè)兩三個(gè)小伙伴)。一個(gè)幫我燒開(kāi)水,一個(gè)幫我掃地,一個(gè)幫我煮飯。這樣操作的話,在同一個(gè)時(shí)間段,就有多個(gè)人來(lái)幫你做事情。(這種操作,我們把它叫做多線程操作,就是同一時(shí)間段,有多個(gè)人來(lái)做事情)
多線程操作它有個(gè)缺點(diǎn),就是你請(qǐng)這些小伙伴來(lái)幫你做事情,肯定要犒勞一下他們,那么你勢(shì)必會(huì)花費(fèi)一下你的零用錢(qián),你肯定要買(mǎi)點(diǎn)好吃的東西來(lái)犒勞一下。那么這樣,如果你不想花你的錢(qián),但是你又想把事情做好,那么你怎么辦呢?只能按照剛才我們異步的方式,就是你一個(gè)人做。又要提高效率怎么辦呢?就是我做這件事情的時(shí)候,同時(shí)又要做其它事情,那么這個(gè)就是單線程(就是一個(gè)人做事情)。
跨平臺(tái)
目前我們的node.js在mac系統(tǒng)上、Windows上面和Linux這些上面,都可以運(yùn)行,它已經(jīng)開(kāi)發(fā)除了對(duì)應(yīng)的運(yùn)行環(huán)境了。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- Node.js的特點(diǎn)和應(yīng)用場(chǎng)景介紹
- 簡(jiǎn)單實(shí)現(xiàn)node.js圖片上傳
- node.js請(qǐng)求HTTPS報(bào)錯(cuò):UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解決方法
- 詳解Node.js:events事件模塊
- node.js版本管理工具n無(wú)效的原理和解決方法
- 使用Node.js給圖片加水印的方法
- Node.js中路徑處理模塊path詳解
- Node.js開(kāi)啟Https的實(shí)踐詳解
- 深入理解Node.js 事件循環(huán)和回調(diào)函數(shù)
- NODE.JS跨域問(wèn)題的完美解決方案
- Node.js包管理器Yarn的入門(mén)介紹與安裝
- Node.js的環(huán)境安裝配置(使用nvm方式)
相關(guān)文章
Node.js API詳解之 module模塊用法實(shí)例分析
這篇文章主要介紹了Node.js API詳解之 module模塊用法,結(jié)合實(shí)例形式分析了Node.js API中module模塊基本功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05Node.js中的process.nextTick使用實(shí)例
這篇文章主要介紹了Node.js中的process.nextTick使用實(shí)例,nextTick函數(shù)有什么用、怎么用、和setTimeout有什么區(qū)別呢,本文就講解了這些知識(shí),需要的朋友可以參考下2015-06-06node.js中的http.request.end方法使用說(shuō)明
這篇文章主要介紹了node.js中的http.request.end方法使用說(shuō)明,本文介紹了http.request.end的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12詳解基于node的前端項(xiàng)目編譯時(shí)內(nèi)存溢出問(wèn)題
本篇文章主要介紹了基于node的前端項(xiàng)目編譯時(shí)內(nèi)存溢出問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08關(guān)于npm?i幾種常見(jiàn)命令的區(qū)別詳解
npm(Node.js Package Manager)是一個(gè)Node.js的包管理工具,用來(lái)解決Node.js代碼部署問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于npm?i幾種常見(jiàn)命令的那點(diǎn)事,需要的朋友可以參考下2023-03-03node.js安裝及環(huán)境配置超詳細(xì)步驟講解(Windows系統(tǒng)安裝包方式)
這篇文章主要介紹了node.js安裝及環(huán)境配置超詳細(xì)教程(Windows系統(tǒng)安裝包方式),本文分步驟通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02Node 創(chuàng)建第一個(gè)服務(wù)器應(yīng)用的操作方法
Node.js是一個(gè)基于Chrome V8引擎的JavaScript運(yùn)行環(huán)境,可以用于構(gòu)建高性能的網(wǎng)絡(luò)應(yīng)用程序,它采用事件驅(qū)動(dòng)、非阻塞I/O模型,使得程序可以以高效地方式處理并發(fā)請(qǐng)求,這篇文章主要介紹了Node 創(chuàng)建第一個(gè)服務(wù)器應(yīng)用,需要的朋友可以參考下2024-02-02