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