1. 程式人生 > >Nodejs的介紹

Nodejs的介紹

網站 htm 操作 最大堆 height 驅動 同時 socket 進程

Nodejs的介紹

Node.js的是建立在Chrome的JavaScript的運行時,可方便地構建快速,可擴展的網絡應用程序的平臺。Node.js使用事件驅動,非阻塞I/O模型,輕量、高效,可以完美地處理時時數據,運行在不同的設備上。

1.1. 誰在用Nodejs?

從Nodejs官方網站的企業登記頁(https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node),包括我們熟知的公司有LinkedIn, Yahoo, Paypal, eBay, Walmart,Groupon 還有很多的中小型公司,國內的公司如雪球、淘寶、網易、百度等也都有很多項目運行在Node.js之上。

技術分享

這些公司不僅是嘗試在用,而且都在向Nodejs遷移。截止到2014年6月本文發稿時,已經有79693包在npm.org上面發布,而且這個數字還在快速增長中。

那麽接下來,大家肯定都會問為什麽要是用Nodejs呢?

1.2. 為什麽要用Nodejs?

從我使用體會來說,Node有4大優勢:

  • 1. Nodejs基於Javascript語言,不用再單獨新學一門陌生的語言,從而減低了學習的門檻。同時,Javascript語言在Web前端開發中至關重要,特別HTML5的應用必須要使用,所以前後臺統一語言,不僅可以實現程序員的全棧開發,還可以統一公共類庫,代碼標準化。單憑這一點,Nodejs就已經贏得市場的青睞了。
  • 2. Nodejs並沒有重新開發運行時環境,而是選擇了目前最快的瀏覽器內核V8做為執行引擎,保證了Nodejs的性能和穩定性。
  • 3. Nodejs的開發非常高效,而且代碼簡單,得益於Nodejs的單線程機制。而Nodejs的另一個特點異步編程,讓Nodejs處理IO密集型應用有了明顯的優勢。個人感覺,用Nodejs比Java做Web開發要高效10倍,比PHP的代碼還要簡單。
  • 4. Nodejs的社區在壯大,不僅包的數量在快速增加,而且包的質量也要明顯好於其他語言的。很多明星級的包,都是簡單而靈巧的,為了開發者的使用習慣而設計。我最常用到的工具包,如socket.io, moment.js, underscore.js, async.js, express.js, bower.js, grunt.js, forever.js…,確實在改變我以前的編程習慣。

當然,除了我使用Nodejs的理由,很多公司也都有自己的使用理由。

ebay選擇Nodejs的理由,可以歸納為以下4點:

  • 動態語言:開發效率非常高,並有能力構建復雜系統,如ql.io。
  • 性能和I/O負載:Nodejs非常好的解決了IO密集的問題,通過異步IO來實現。
  • 連接的內存開銷:每個Node.js進程可以支持超過12萬活躍的連接,每個連接消耗大約2K的內存。
  • 操作性:實現了Nodejs對於內存堆棧的監控系統。

1.3. Nodejs不適合的領域

每一種語言或平臺都有不擅長領域,對於Nodejs來說最不擅長的領域在於CPU和內存的編程操作。

  • 1. 計算密集型應用,讓Javascript和C去拼計算性能,估計是不可能贏的。
  • 2. 內存控制,讓Javascript和Java比較復雜數據類型定義,也是很困難的。因為Javascript的面向對象是基於JSON的,而Java是直接使用內存結構。所以,通過JSON序列化和反序列的過程控制內存,Javascript就已經輸了。
  • 3. 大內存的應用,由於V8引擎有內存設計的限制,32位環境中最大堆是1G,64位環境中最大堆也不到2G,如果要一次讀入10G數據,對於Nodejs來說也無法實現。
  • 4. 靜態服務器,雖然Nodejs的優勢在IO密集集應用,但是和Nginx的處理靜態資源還是有很大的差距。
  • 5. 不需要異步的應用:比如系統管理,自行化腳本等,還是Python更順手,Nodejs的異步調用可能會給編程帶來一些麻煩。

原博:http://blog.fens.me/nodejs-roadmap/

Nodejs的介紹