學習nodejs技術已經有一週時間了,其中有幾回想寫點東西出來。可是打開編輯器發現第一句話就很很差寫。nodejs究竟是個什麼東西呢?官方的解釋就不提了,我來講一下個人理解。nodejs不是一門語言,由於你會發現全部代碼都是JavaScript。nodejs也不是一個web框架,nodejs是一個平臺,是一個解析器。html
學習nodejs可謂一路坎坷,書就不提了。查了一下圖書館有7種nodejs書籍,40本是全被借出。這個事說明了一個問題,nodejs正在發展,nodejs很是的火熱。找不到書,只能在網上找一些教程和博客來看看,沒辦法系統的學習。可是通過一系列的死磕,仍是找到了一些關鍵詞:事件驅動,回調,非阻塞I/O,異步操做。通常在學習node的過程當中,你還會接觸到一些別的框架和技術,好比jade、ejs、express、grunt、bootstrap。。。。通常的教程沒有單獨的特別細緻專一node自己的。因此我被這些模板引擎、構建工具、前端框架搞的暈頭轉向。最後本身也暈了,說好的node呢?前端
事件驅動機制是Node.js經過內部單線程高效率地維護事件循環隊列來實現的,沒有多線程的資源佔用和上下文切換,這意味着面對大規模的http請求,Node.js憑藉事件驅動搞定一切。舉例說明一下大體的過程:你去請求nodejs服務器上的資源A,nodejs接受到請求後,調用一個函數去讀取磁盤資源A。而後node服務器就無論了,去處理別的請求了。當A資源被讀取完畢了,有一個回調函數被插入到nodejs服務隊列中。當nodejs運行這個回調的時候,實際上就把A返回給瀏覽器了。這叫作事件驅動。java
非阻塞式IO的意思是指,在IO操做的同時,不影響其餘事件的處理。至關於開闢了一個線程去幹這事了。須要注意的是,nodejs可沒辦法這麼作。nodejs是單線程的,只能一口一口的吃東西。說到底仍是經過回調實現,和上面舉的例子是一個道理。node
學習nodejs須要對JavaScript有個比較深刻的理解和學習,閉包、匿名函數、做用域沒搞清楚就別嘗試了。還有對於後端 技術的瞭解我的認爲也很重要。甚至我以爲nodejs的開發對於web流程的理解程度要求很高。不一樣於java或者PHP開發,nodejs的不少「web服務器」要作的事情都得本身來作。並且HTTP協議、路由、項目管理、大量的工具選擇等等問題都是一種挑戰。git
在此記錄一下資料地址:github
http://blog.fens.me/series-nodejs/web