相信很多人仍是不認識node.js是什麼?也包括不少開發人員也是不太清楚怎麼回事?其實在node.js出現以前,web應用程序構架(包括流量、處理器速度和內存速度)存在一些瓶頸。這裏的瓶頸主要是指服務器可以處理併發鏈接的數量。直到node.js的出現才完美的解決了這一問題。那今天就要講講node.js吧!node
一、起源web
Node.js起源於2009年3月。最初Ryan Dahl是爲了構建一個高性能的文本服務器,而node.js是他在尋找一種更高提高web服務器性能發現的,事件驅動、非阻塞I/O這種方式能更好的提升性能。隨着Nodejs的不斷髮展,Nodejs漸漸演變成一種構建網絡應用的基礎框架,並發展爲一個不共享任何資源的單線程、單進程系統,但包含了很適合網絡的庫,這樣Nodejs就爲構建大型分佈式應用提供了基礎設施。他們的目標都是爲了構建快速、可伸縮的網絡應用平臺。它自身很是簡單、採用通訊協議來組織許多的Node,很是容易經過拓展來達成構建大型網絡應用的目的。npm
二、node.js簡介編程
Node.js是一個能夠快速構建網絡服務及應用的平臺。該平臺的構建是基於Chrome'sJavaScriptruntime,也就是說,實際上它是對GoogleV8引擎(應用於GoogleChrome瀏覽器)進行了封裝。Nodejs不是一個js應用而是一個js運行平臺。其是由C++編寫而成。可是Nodejs是一個後端的運行環境。所以你能夠編寫系統級或者服務器端的js讓Nodejs幫你執行。後端
三、優點瀏覽器
1)node.js採用事件驅動、異步編程,爲網絡服務而設計。服務器
2)node.js採用非阻塞模式的IO處理,可使node.js在相對低系統資源耗,擁有出色的負載能力,很是適合用做依賴其它IO資源的中間層服務。網絡
3)node.js輕量高效,能夠認爲是數據密集型分佈式部署環境下的實時應用系統的完美解決方案。併發
4)使用node.js配合CoffeeScript 寫異步操做鏈很是便利,相比之下Tornado不管是寫命名函數的回調,仍是 yield 一個 Task 都沒那麼天然。框架
四、缺點
1)用過的人可能第一時間就會想到debug,太難了,沒有stack trace.調試太困難。或者說是苦逼。
2)而後就是包的問題。Nodejs社區有不少包品質參差不齊、若是你想偷懶而又恰好npm了一個有問題的包你就悲催了。可是是開源的你能夠本身調。