Caleb Madrigal是來自美國密爾沃基市的一名軟件顧問。四年前,他在聽說“將JavaScript用作服務器端語言”這樣的說法時,認為那是一個荒唐的想法。有那么多服務器端語言可供選擇,為什么要選JavaScript?這是他當時的想法。但現(xiàn)在,他在當前的項目中選用了JavaScript/Node.js。他近日撰文對自己的這一轉(zhuǎn)變進行了解釋。
首先,許多頂級企業(yè)都使用了Node.js,并且效果非常好,其中包括PayPal、Walmart、Ebay、Groupon和LinkedIn。這些企業(yè)在生產(chǎn)環(huán)境中大量使用了Node.js。Madrigal舉了PayPal的例子。PayPal針對他們網(wǎng)站上其中一個流量最大的應用,對比了它的Node.js版本和Java版本,發(fā)現(xiàn)前者在多個方面優(yōu)于后者,并最終決定由Java切換到JavaScript。InfoQ對此有過報道。
其次,Node.js有一個很棒的包管理系統(tǒng)NPM。通過運行“npm install 包名”幾乎可以安裝任何包/庫。另外,通過package.json文件可以跟蹤依賴關系。因此,Node.js庫很容易克隆,運行“npm install”可以安裝所有的依賴關系。
再次,Node.js社區(qū)異?;钴S,總是有新的庫產(chǎn)生。這些庫非常好用,使JavaScript成為一個非常高效的平臺。
然后是Node.js 的REPL(read-evaluate-print loop)命令行。開發(fā)人員只需要在終端中輸入“node”,就可以對Node.js進行逐行測試。
最后,Node.js有一個很重要的特性:非阻塞函數(shù)。這就是為什么我們會在Node.js的代碼中看到大量的callbacks和promises。這種設計模式給Node.js帶來了非常優(yōu)異的性能。
此外,Node.js的最大一個優(yōu)點是:它是JavaScript。任何人都知道JavaScript,所以使用Node.js不需要學習一門新語言。有了它,開發(fā)人員可以只使用一種語言,瀏覽器端用JavaScript,服務器端用Node.js。在使用像MongoDB和CouchDB這樣存儲JSON對象的文檔數(shù)據(jù)庫時,這會極大地簡化數(shù)據(jù)庫和用戶界面之間的數(shù)據(jù)傳遞任務。