今天終于把樸靈老師寫的《深入淺出Node.js》給學習完了, 這本書不是一本簡單的Node入門書籍,它沒有停留在Node介紹或者框架、庫的使用層面上,而是從不同的視角來揭示Node自己內在的特點和結構,建議有一定Node基礎或者做過Node方面的小專案的同學閱讀,看完以后你的思維會有很奇特的碰撞,我看的時候就常常會有這樣的想法:“哦,原來這個功能是這樣實作的哦”,下面這篇文章是我第二次閱讀《深入淺出Node.js》的一些學習記錄,并且通過百度腦圖這個工具來畫出思維導圖,每天將自己的學習總結寫在這篇文章下面,圖片文字太小可以右鍵從新標簽頁打開圖片,然后點擊就可以放大顯示, 新增原始檔案腦圖地址,這樣大家就可以直接到腦圖去看思維導圖
Node簡介
這一章簡要介紹了Node,從中可以了解Node的發展歷程及其帶來的影響和價值,
為什么叫Node?起初,Ryan Dahl稱他的專案為web.js,就是一個Web服務器,但是專案的發展超過了他當初單純開發一個Web服務器的想法,變成構建網路應用的一個基本框架,這樣可以在它的基礎上構建更多的東西,諸如服務器、客戶端、命令列工具等,Node發展為一個強制不共享任何資源的單執行緒、單行程系統,包括十分適宜網路的庫,為構建大型分布式應用程式提供了基礎設施,其目標也是成為一個構建快速、可伸縮的網路應用平臺,它自身非常簡單,通過通信協議來組織很多Node,非常容易通過擴展來達成構建大型網路應用的目的,每一個Node行程都構成這個網路應用中的一個節點,這是它名字所含意義的真諦,
模塊機制
這一章主要介紹Node的模塊機制,從中了解到Node如何實作CommonJS模塊和包規范的,在這一章中,我們詳細的解釋了模塊在參考程序中的編譯、加載規則,另外,我們還能讀到更深度的關于Node自身源代碼的組織架構,
CommonJS規范為JavaScript定制了一個美好的愿景—希望JavaScript能夠在任何地方運行,
異步I/O
這一章展示了Node中我們將異步I/O作為主要設計理念的原因,另外,還會介紹到異步I/O的詳細實作程序,
事件回圈是異步實作的核心,它與瀏覽器中的執行模型基本上保持一致,而向古老的Rhino,盡管是較早就能在服務器運行的JavaScript運行時但是執行模型并不像瀏覽器采用事件驅動,而是使用像其他語言一樣采用同步I/O作為主要模型,這造成它在性能上面無法發揮,Node正是依靠構建了一套完善的高性能異步I/O框架,打破了JavaScript在服務器止步不前的局面,
異步編程
這一章主要介紹異步編程,其中最常見的異步編程問題介紹,也有詳細的解決方案,在這一章中我們可以接觸到Promise、事件、高階函式是如何進行流程控制的, (這一章建議多看書)
記憶體控制
這一章主要介紹了Node的記憶體控制,主要內容有垃圾回收、記憶體限制、查看記憶體、記憶體泄漏、大記憶體應用等細節,
Node將JavaScript的主要應用場景幫到了服務器端,相應要考慮的細節也與瀏覽器端不同,在服務器端,資源向來是寸土寸金,要為海量用戶服務,就使得一切資源都要高效回圈利用,需要更嚴謹為每一份資源作出安排,
理解Buffer
這一章主要介紹了前端JavaScript里不能遇到的Buffer,由于Node中會涉及頻繁的網路和磁盤I/O,處理位元組流資料會是很常見的行為,這部分的場景與純粹的前端開發完全不同,
體會過JavaScript友好字串操作后,有些開發者可能會形成思維定勢,將Buffer當作字串來理解,但字串與Buffer之間有實質性的差異,即Buffer是二進制資料,字串與Buffer之間存在編碼關系,因此,理解Buffer的諸多細節十分必要,對于如何高效處理二進制十分有用,
網路編程
這一章介紹了Node支持的TCP,UDP,HTTP編程,還講了有關于Websocket與TSL、HTTPS的介紹,
利用Node可以十分方便地搭建網路服務器,不需要專門的Web服務器作為容器,僅僅需要幾行代碼就可以構建服務器,Node提供了net、dgram、http、https這4個模塊,分別用于處理TCP、UDP、HTTP、HTTPS,適用于服務端和客戶端,
構建Web應用
這一章主要介紹了構建Web應用程序中用到的大多數技術細節,如資料處理、路由、MVC、模板、RESTful等, 我覺得這一章對于我們開發一個Nodejs方面的應用很有指導性作用,整理本章細節就可以完成一個功能的Web開發框架,這章的目的也就是希望讀者學習過這一章后能夠對Node開發帶來地圖式的啟發,在開發Web應用時能夠心有輪廓,明了細微,
玩轉行程
這一章主要介紹Node的多行程技術,以及如何借助多行程方式來提升應用的可用性和性能,從嚴格意義上面來講,Node并非真正的單執行緒架構,在第3章我們還敘述過Node自身還有一定的I/O執行緒存在,這些I/O執行緒由底層libuv處理,這部分執行緒對于JavaScript開發者是透明的,只在C++擴展開發時才會關注到,JavaScript代碼永遠運行在V8上,是單執行緒的,本章將圍繞JavaScript部分展開,所以屏蔽底層細節的討論,
測驗
這一章主要介紹Node的單元測驗和性能測驗技巧,測驗的意義在于,在用戶消費產出的代碼之前,開發者首先消費他,給予其重要的質量保證,
測驗包括單元測驗、性能測驗、安全測驗和功能測驗等幾個方面,本章將從Node實踐的角度來介紹單元測驗和性能測驗,
產品化
“行百里路半九十”,完成產品開發的代碼撰寫后,才完成了專案的第一步,這是一章介紹了將Node產品化所需要的注意到的細節,如專案工程化、代碼部署、日志、性能、監控報警、穩定性、異構共存, 對于Node開發者而言,很多其他語言走過的路需要開發者帶著Node特效重新踐行一遍,這并不是壞事,Node更接近底層使得開發者對于細節的可控性非常高,
“大清亡于閉關鎖國,學習技術需要交流和資料”, 在這里我給大家準備了很多的學習資料免費獲取,包括但不限于技術干貨、大廠面試題系列、技術動向、職業生涯等一切有關程式員的分享
.web前端小白進階方法筆記,學習資料,面試題和視頻,專案原始碼免費領取(持續更新)
先奉上一些資料圖:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/83663.html
標籤:JavaScript
下一篇:h5+ 開發分享功能
