【轉載】【Todo】Nodejs的優缺點

來源:互聯網
上載者:User

標籤:

Nodejs的優缺點,這裡面講的比較詳細。有時間可以多看看別人的分析。

https://www.zhihu.com/question/19653241

 

Node.js 的架構與 Django, Rails 等傳統的 Framework 不同,不需要放在 Nginx / Apache 後,利用 WSGI, CGI 之類的介面一板一眼的 [接受Request] -> [運行程式邏輯] -> [產生並返回Response]。這是一個巨大的變化,之前一些無法想象的功能都有可能實現了。比如 https://github.com/Miserlou/DirtyShare 可以用瀏覽器實現 P2P 的檔案傳輸。正因為 Node.js 可以更精細的控制 Request 和 Response 的時間和內容,websocket 似乎天生就是為 Node.js 而生的,而配合 http://socket.io 這個神奇的庫之後,在 realtime webapp 這個領域,Node.js 已經沒有對手了。Node.js 的包管理器 npm 設計得比 python 和 ruby 好很多。有很多的 module 開發人員。當然也有一些缺點Debug 很困難。沒有 stack trace,出了問題很難尋找問題的原因。如果設計不好,很容易讓代碼充滿 callback 。實在受不了的可以考慮一下 https://github.com/laverdet/node-fibers/ 這個項目。不過 Node.js 的核心團隊並不推薦使用。

 

我們在用 Node.js 處理知乎主站的 web 即時推送。你現在看到的 Feed 、訊息的即時更新,背後就是幾個 node 進程扛起來的。優點:1. 處理高並發情境效能更高在用 http://socket.io 之前,推送服務是用 ajax polling 做的。我們用 Tornado 和 Node.js 做過兩個版本的推送服務。在當時的測試環境下,Node.js 的 CPU 時間是 Tornado 的三分之一,記憶體使用量是 Tornado 的一半,程式碼數只有 Tornado 的三分之一(Node.js 版是用 coffee 寫的)。後來我們使用了 http://socket.io,CPU 開銷進一步降低。2. 函數式編程非常適合寫非同步回調鏈用 Node.js 配合 CoffeeScript 寫非同步作業鏈非常便利,相比之下 Tornado 無論是寫命名函數的回調,還是 yield 一個 Task 都沒那麼自然。缺點:1. 大量匿名函數使異常棧變得不好看。2. 無法以 request 為單位 catch 異常,必須確保不要在不 catch 異常的第三方庫的回調裡的拋異常,這在一個非同步作業鏈條裡是一件比較麻煩的事。解決方案之一是對那些不 catch 異常的第三方庫做一些封裝,把所有的異常變成事件,改成 on(‘error‘) 形式的 API。

 

【轉載】【Todo】Nodejs的優缺點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.