全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

Node.js起源?Node.js有哪些特點(diǎn)?

更新時(shí)間:2021-11-02 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

Nodejs是個(gè)在服務(wù)器動(dòng)可以解析和執(zhí)行JavaScript代碼的運(yùn)行環(huán)境,也可以說(shuō)是一個(gè)運(yùn)行時(shí)平臺(tái),仍然使用JavaScript作為開(kāi)發(fā)語(yǔ)言,但是提偶了一些功能性的API,例如文件操作和網(wǎng)絡(luò)通信API等。

Nodejs是由 Ryan Dahl 于2009年5月推出的最初版本,Ryan Dahl 是一名專(zhuān)注于實(shí)觀(guān)高性晚Web服務(wù)器的優(yōu)化專(zhuān)家,他將Chrome瀏覽器的V8引擎單獨(dú)移植出來(lái),在此基礎(chǔ)之上,為其上層的JavaScnpr提供了友好的API,供開(kāi)發(fā)人員使用,而且完全開(kāi)源免費(fèi)。

Node.js的特點(diǎn)和優(yōu)勢(shì)

Node.js作為一門(mén)新興的后臺(tái)語(yǔ)言平臺(tái),旨在幫助程序員快速構(gòu)建可伸縮的應(yīng)用程序。自發(fā)布以來(lái),廣受開(kāi)發(fā)人員關(guān)注,Node.js之所以這么受歡迎歸功于它的一些吸引人的特點(diǎn)。

具體如下:

(1)它是一個(gè)JavaScript 運(yùn)行環(huán)境:Node.js作為運(yùn)行環(huán)境可以讓JavaScript 脫離瀏覽器,在服務(wù)器端單獨(dú)執(zhí)行,如果客戶(hù)端和服務(wù)器端使用相同的開(kāi)發(fā)語(yǔ)言,可以在很大程度上達(dá)到客戶(hù)端和租務(wù)器端代碼的共用。

(2)依賴(lài)于Chrome V8 引擎進(jìn)行代碼解析:Chrome V8負(fù)責(zé)在非瀏覽器解析情況下解析JavaScript 代碼。

(3)事件驅(qū)動(dòng)(Event-Driven):對(duì)于事件密動(dòng)來(lái)說(shuō),在學(xué)習(xí)JavaScript的初級(jí)階段。都會(huì)接觸到事件,如onclick、onload等,這些事件通常會(huì)綁定在某個(gè)頁(yè)面元素上,然后為其指定事件處理函數(shù),當(dāng)事件被觸發(fā)時(shí)才會(huì)執(zhí)行相應(yīng)的處理函數(shù)??梢哉f(shuō)這樣的事件處理機(jī)制就是標(biāo)準(zhǔn)的事件驅(qū)動(dòng)機(jī)制。

(4)非阻塞I/O(non-blocking L/O):提到非阻塞I/O,首先有必要了解一下阻塞L/O,I/O(Input/Output)表示輸入/輸出操作,阻室I/O可以理解為被阻塞了的輸入/輸出操作。在服務(wù)器端有很多會(huì)涉及阻塞LO的操作,例如在讀取文件的過(guò)程中,需要等待文件讀取完畢后才能繼續(xù)執(zhí)行后面的操作,Node.js中使用事件同調(diào)的方式來(lái)解決這種阻塞l/O的情況,避免了阻塞I/O所需的等待,所以說(shuō)它具有非阻塞l/O的特點(diǎn)。

(5)輕量,可伸縮,適于實(shí)時(shí)數(shù)據(jù)交互應(yīng)用:在Node.js中,Socket可以實(shí)現(xiàn)雙向通信,例如聊天室就是實(shí)時(shí)的數(shù)據(jù)交互應(yīng)用。

(6)單進(jìn)程,單線(xiàn)程:進(jìn)程就是一個(gè)應(yīng)用程序的一次執(zhí)行過(guò)程,它是一個(gè)動(dòng)態(tài)的概念:而線(xiàn)程是進(jìn)程中的一部分,進(jìn)程包含多個(gè)線(xiàn)程在運(yùn)行。單線(xiàn)程就是進(jìn)程中只有一個(gè)線(xiàn)程,阻塞1/O模式下一個(gè)線(xiàn)程只能處理一個(gè)任務(wù):而非阻塞1/O模式下,一個(gè)線(xiàn)程永遠(yuǎn)在處理任務(wù),這樣CPU的利用率是100%,Nodej采用單線(xiàn)程,利用事件驅(qū)動(dòng)的異步編程模式,實(shí)現(xiàn)了非阻塞I/O。




猜你喜歡:

Node.JS下載與安裝詳細(xì)教程

什么是watch偵聽(tīng)器?watch偵聽(tīng)器基本語(yǔ)法

什么是前端工程化?它有哪些優(yōu)點(diǎn)和好處?

使用精靈圖的核心要義是什么?為什么使用精靈圖?

黑馬程序員HTML&JS+前端開(kāi)發(fā)培訓(xùn)

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!