為什麽要用Nodejs?
回到原點會問,為什麽要用NodeJS?
NodeJS的優勢:
- NodeJS基於Javascript語言,對於前端工程師[script base的],從而減低了學習的門檻。同時,Javascript語言在Web前端視一定會用到的,(不大可能只用HTML+CSS就可以做前端開發),所以在前後臺統一語言,不僅可以實現全端開發,代碼標準化。所以這是為什麼這麼多人來玩NodeJS。
- NodeJS選擇了目前最快的瀏覽器內核V8做為執行引擎,保證了NodeJS的性能和穩定性,現在新版的NodeJS V6版本也都支援了ES6。
- Nodejs的開發非常高效,而且代碼簡單,得意於Nodejs的單線程機制。而Nodejs的另一個特點異步編程,讓Nodejs處理IO密集型應用有了明顯的優勢。個人感覺,用Nodejs比Java做Web開發要高效10倍,比PHP的代碼還要簡單。
- Nodejs的社群越來越壯大,不只是Package的數量眾多,如express.js, bower.js, grunt.js, cheerio.js,forever.js[之前有介紹到], socket.io。
- 現在支援了利用v8去做開發桌面板的程式electron.io,。
ebay選擇Nodejs的理由,可以歸納為以下4點:
動態語言:開發效率非常高,並有能力構建復雜系統,如ql.io。
性能和I/O負載:Nodejs非常好的解決了IO密集的問題,通過異步IO來實現。
連接的內存開銷:每個Node.js進程可以支持超過12萬活躍的連接,每個連接消耗大約2K的內存。
操作性:實現了Nodejs對於內存堆棧的監控系統。
1.3. Nodejs不適合的領域
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的異步調用可能會給編程帶來一些麻煩。