Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的服務(wù)器端平臺(tái)。Node.js是由瑞恩·達(dá)爾在2009年開(kāi)發(fā)的,它的最新版本是v0.10.36。 Node.js確定在其官方文檔如下:
Node.js®是建立在Chrome的JavaScript運(yùn)行時(shí)很容易構(gòu)建快速,可擴(kuò)展的網(wǎng)絡(luò)應(yīng)用程序的平臺(tái)。 Node.js使用事件驅(qū)動(dòng),非阻塞I/O模型,使得它重量輕,效率高,完美的跨分布式設(shè)備運(yùn)行數(shù)據(jù)密集型實(shí)時(shí)應(yīng)用。
Node.js是一個(gè)開(kāi)源,跨平臺(tái)運(yùn)行環(huán)境的服務(wù)器端和網(wǎng)絡(luò)應(yīng)用。Node.js應(yīng)用程序是用JavaScript編寫(xiě)的,并可以在OS X,微軟Windows和Linux內(nèi)的Node.js運(yùn)行時(shí)運(yùn)行。
Node.js還提供了豐富的各種模塊的JavaScript庫(kù),從而簡(jiǎn)化了使用Node.js,一個(gè)很大的程度上方便web應(yīng)用程序的研究與開(kāi)發(fā)。
Node.js = Runtime Environment + JavaScript Library
以下是一些使得Node.js成為軟件架構(gòu)師的首選的重要特征。
Node.js庫(kù)異步和事件驅(qū)動(dòng) - 所有API異步是非阻塞。 這意味著一個(gè)基于Node.js的服務(wù)器不會(huì)等待API返回?cái)?shù)據(jù)。 服務(wù)器移動(dòng)到下一個(gè)API后調(diào)用它,Node.js事件的一個(gè)通知機(jī)制有助于服務(wù)器,以獲得從以API調(diào)用的響應(yīng)。
非???/strong> - 正在構(gòu)建在谷歌Chrome的V8 JavaScript引擎,Node.js庫(kù)代碼執(zhí)行是非??斓?。
單線程但高度可擴(kuò)展 - Node.js使用事件循環(huán)單線程模型。事件機(jī)制有助于服務(wù)器在非阻塞的方式作出反應(yīng),并使得服務(wù)器的高可擴(kuò)展性,而不是它創(chuàng)建線程限制來(lái)處理請(qǐng)求的傳統(tǒng)服務(wù)器。 Node.js使用單線程的程序和同樣的程序處理比傳統(tǒng)的服務(wù)器要大的多,比如:比Apache HTTP服務(wù)器請(qǐng)求服務(wù)的數(shù)量大得多。
無(wú)緩沖 - Node.js的應(yīng)用從來(lái)沒(méi)有緩沖任何數(shù)據(jù)。這些應(yīng)用程序只需輸出塊中的數(shù)據(jù)。
許可證 - Node.js是在MIT許可下發(fā)布的。
以下是包含項(xiàng)目,應(yīng)用和公司,都使用node.js一個(gè)詳盡的清單在github鏈接, 這個(gè)列表包括eBay, General Electric, GoDaddy, Microsoft, PayPal, Uber, Wikipins, Yahoo!, Yammer都在不斷使用它。
下圖描述了Node.js的一些重要組成部分,我們將詳細(xì)在隨后的章節(jié)討論。
以下是Node.js是證明自己完美的技術(shù)的領(lǐng)域。
I/O密集型應(yīng)用程序
數(shù)據(jù)流應(yīng)用
數(shù)據(jù)密集型實(shí)時(shí)應(yīng)用(DIRT)
JSON API的應(yīng)用程序
單頁(yè)應(yīng)用
不建議使用Node.js在CPU密集型應(yīng)用。