經過近期的面試,我認識到本身的學習方法仍是有問題,面百度的時候面試官問我,爲何要用node,爲何不用php,對於只學過node幾天的我當時就楞了,大概想到單線程事件輪詢和多線程,後來面試官告訴我是異步和同步的差別,在實習的時候也沒問過爲何咱們就用的是node而不是php,只是以爲你們不都用node麼,前幾天師兄也建議我學習一個東西,首先不要去看文檔和具體操做,而要透過大牛們是怎麼看待這個東西的,來發現這個東西解決了什麼問題,跟其餘不一樣在哪裏,這個東西的設計思想是什麼,這應該就是所謂的技術選型吧,對於別人給什麼就用什麼的我以往不多思考技術選型的問題,實在是一個缺陷,更多的時候,我只是一個使用者而不是開發者javascript
Node.js的主要思想是:面對在分佈式設備上運行的數據密集型實時應用程序,使用非阻塞,事件驅動的I / O保持輕量級和高效性。php
一個快速計算:假設每一個線程可能有一個伴隨的2 MB內存,運行在具備8 GB RAM的系統上,咱們理論上最多有4000個併發鏈接,以及線程之間的上下文切換的成本。這是您一般在傳統的網絡服務技術中處理的場景。經過避免這一切,Node.js實現了超過1M個併發鏈接的可伸縮性級別(做爲概念驗證)。前端
題葉的回答:java
Node.js 專一解決 Web 服務器廣泛存在的 IO. 數據庫訪問時間緩慢, 而 CPU 大量時間閒置的問題, 順便解決廣大前端開發者不方便寫後端服務器的問題. 加上用的人多了, 別的好處也滋生了. 若是考慮其餘的方面, Node.js 未必是好的選擇.. 也能夠不用.node
是前端嘗試學習後端的最佳選擇
曾經有人跟我說會寫javascript就會寫node
nodejs其實是一種上下文,容許在後端運行javascript代碼
實如今後端運行javascript代碼原理:使用google的v8引擎解釋和執行javascript代碼面試
Node.js的設計思想中以事件驅動爲核心,它提供的絕大多數API都是基於事件的、異步的風格。意味着雖然在代碼結構中,函數看似是依次註冊的,可是它們並不依賴於自身出現的順序,而是等待相應的事件觸發。重要的優點在於,充分利用了系統資源,執行代碼無須阻塞等待某種操做完成,有限的資源能夠用於其餘的任務。此類設計很是適合於後端的網絡服務編程,Node.js的目標也在於此。在服務器開發中,併發的請求處理是個大問題,阻塞式的函數會致使資源浪費和時間延遲。經過事件註冊、異步函數,開發人員能夠提升資源的利用率,性能也會改善。數據庫
Node.js是一個JavaScript運行時,它使用Google開發的V8引擎在Chrome中使用。 V8以閃電般的速度編譯和執行JavaScript,主要是由於V8將JavaScript編譯爲本機機器碼。編程
換句話說,讀取和寫入網絡鏈接,讀取/寫入文件系統和讀取/寫入數據庫,這些都是Web應用程序中很是常見的任務 - 在Node中很是快速地執行後端
使用Node.js能夠在客戶端,服務器和數據庫中使用相同的語言。您能夠將數據以其原生JSON格式從瀏覽器保存到磁盤瀏覽器
TOP 10 REASONS TO USE NODE.JS
Why The Hell Would I Use Node.js?