若是你想要深刻學習Node,那你不能錯過《深刻淺出Node.js》這本書,它從不一樣的視角介紹了 Node 內在的特色和結構。由首章Node 介紹爲索引,涉及Node 的各個方面,主要內容包含模塊機制的揭示、異步I/O 實現原理的展示、異步編程的探討、內存控制的介紹、二進制數據Buffer 的細節、Node 中的網絡編程基礎、Node 中的Web 開發、進程間的消息傳遞、Node 測試以及經過Node 構建產品須要的注意事項。最後的附錄介紹了Node 的安裝、調試、編碼規範和NPM 倉庫等事宜。在讀這本書的過程當中我收穫頗多,並用思惟導圖的方式記錄下來,方便本身後期溫故。若是你恰好沒有讀過,能夠當作度這本書的預習閱讀,相信你也會有所收穫(思惟導圖圖片可能有點小,記得點開看)git
本章主要介紹了主流的幾種異步編程解決方案,這是目前JavaScript中主要使用的方案。但對 於其餘語言而言,還有協程(coroutine)等方式。可是因爲Node基於V8的緣由,在目前EMCAScript5 的實現下還不支持協程。這些標準和規範還在制定中,因此暫時不做介紹。將來的V8若是支持 Generator,也將在Node中能直接使用。github
最後,由於人們老是習慣性地以線性的方式進行思考,以至異步編程相對較爲難以掌握。這 個世界以異步運行的本質是不會由於你們線性思惟的慣性而改變。就像日出月落不會由於你的心 情而改變其自有的運行軌跡。編程
Node將JavaScript的主要應用場景擴展到了服務器端,相應要考慮的細節也與瀏覽器端不一樣, 須要更嚴謹地爲每一份資源做出安排。總的來講,內存在Node中不能爲所欲爲地使用,但也不是 徹底不擅長。本章介紹了內存的各類限制,但願讀者能夠在使用中規避禁忌,與生態系統中的各 種軟件搭配,發揮Node的長處。後端
如今知名和成熟的Web框架有Connect、Express等,本章中的內容在這些框架中都有實現, 由於行文的緣由,本章中的代碼實現得較爲粗糙,實際使用請使用這些成熟的框架。瀏覽器
儘管Node從單線程的角度來說它有夠脆弱的:既不能充分利用多核CPU資源,穩定性也無 法獲得保障。可是羣體的力量是強大的,經過簡單的主從模式,就能夠將應用的質量提高一個 檔次。在實際的複雜業務中,咱們可能要啓動不少子進程來處理任務,結構甚至遠比主從模式 複雜,可是每一個子進程應當是簡單到只作好一件事,而後經過進程間通訊技術將它們鏈接起來 便可。這符合Unix的設計理念,每一個進程只作一件事,並作好一件事,將複雜分解爲簡單,將 簡單組合成強大。服務器
儘管經過 child_process 模塊能夠大幅提高Node的穩定性,可是一旦主進程出現問題, 所 有子進程將會失去管理。在Node的進程管理以外,還須要用監聽進程數量或監聽日誌的方式確 保整個系統的穩定性,即便主進程出錯退出,也能及時獲得監控警報,使得開發者能夠及時處 理故障。微信
測試是應用或者系統最重要的質量保證手段。有單元測試實踐的項目,必然對代碼的粒度和 層次都掌握得較好。單元測試可以保證項目每一個局部的正確性,也可以在項目迭代過程當中很好地 監督和反饋迭代質量。若是沒有單元測試,就如同黑夜裏沒有秉燭的行走。網絡
對於性能,在編碼過程當中必定存在部分感性認知,與實際狀況有部分誤差,而性能測試則能 很好地斧正這種差別。框架
思惟導圖能比較清晰的還原整本書的知識結構體系,若是你還沒用看過這本書,能夠按照這個思惟導圖的思路快速預習一遍,提升學習效率。學習新事物總容易遺忘,我比較喜歡在看書的時候用思惟導圖作些記錄,便於本身後期複習,若是你已經看過了這本書,也建議你收藏複習。若是你有神馬建議或則想法,歡迎留言或加我微信交流:646321933異步