前言
最開始只是想寫一個(gè)簡(jiǎn)單的筆記,后來發(fā)現(xiàn),在記筆記的過程中,我會(huì)不斷的將書中一筆帶過的地方補(bǔ)充全,對(duì)于書中說的一些做法,我也會(huì)提供一些其他思路,于是,寫著寫著就不像是一本筆記了,更像是對(duì)于自己的知識(shí)體系的一次全面梳理和復(fù)習(xí)。真可謂是播種跳蚤,卻收獲了龍種。很多東西,只有親自寫一寫才會(huì)發(fā)現(xiàn)自己的不足,自己的問題出在什么地方。并且,很多知識(shí),特別是日新月異的大前端知識(shí)(我們基本上可以把nodejs定位于中間層),需要時(shí)刻不停的學(xué)習(xí),才會(huì)保持技術(shù)的敏感度和熟練度。有一句話老話不是這么說的嘛,學(xué),無(wú)止境。
推薦一個(gè)自己的文章橫向?qū)Ρ菶S5、ES6、ES7、ES8

深入淺出nodejs的作者是樸靈,GitHub上叫JacksonTian。這本書是NodeJS從菜鳥過渡到老手的一本非常棒的武功秘笈,建議想在node方面深入研究的程序員都讀讀這本書。
我寫的這個(gè)讀書筆記,力求將書中所涵蓋的知識(shí)全部包括,同時(shí)也會(huì)對(duì)一些一帶而過的基礎(chǔ)知識(shí)進(jìn)行深入挖掘和探討,力求從廣度和深度方面加深對(duì)于node的學(xué)習(xí)。對(duì)于一些章節(jié),比如附錄A安裝node,我則沒有安照書中的方法去做,我自己使用了另外的方法進(jìn)行了實(shí)現(xiàn)。
希望我的讀書筆記可以做到拋磚引玉,讓大家對(duì)于node有更進(jìn)一步的了解。
各章主要內(nèi)容概述
| 章節(jié) | 概述 |
|---|---|
| 序言、前言 | 概述node取得的成績(jī)(成績(jī)很好,因此阿里巴巴也開始用了,然后樸靈就寫了這本書)和這本書主要可以解決的問題。詳見我的筆記:nodejs深入學(xué)(1)概述 |
| 一 | node的發(fā)展史和概述,詳見我的筆記:nodejs深入學(xué)(2)發(fā)展史與概述 |
| 二 | 本章是從代碼組織結(jié)構(gòu)角度看待node的,即node的模塊機(jī)制(模塊引用、編譯、加載規(guī)則),以及node是如何實(shí)現(xiàn)CommonJS模塊和包規(guī)范的。詳見我的筆記:nodejs深入學(xué)(3)模塊機(jī)制 |
| 三 | 本章是從運(yùn)行結(jié)構(gòu)角度看待node的,即異步IO以及異步IO的實(shí)現(xiàn)原理,詳見我的筆記:nodejs深入學(xué)(4)異步IO |
| 四 | 本章是從編程結(jié)構(gòu)角度看待node的,即異步編程,常見異步編程解決方案。通過Promise、事件、高階函數(shù)進(jìn)行流程控制。詳見我的筆記:nodejs深入學(xué)(5)異步編程 |
| 五 | 本章是從內(nèi)存結(jié)構(gòu)角度看待node的,即內(nèi)存控制、垃圾回收、內(nèi)存限制、查看內(nèi)存、內(nèi)存泄漏、大內(nèi)存應(yīng)用等,詳見我的筆記:nodejs深入學(xué)(6)內(nèi)存控制 |
| 六 | 本章談及的是node中的數(shù)據(jù)在IO流中的結(jié)構(gòu)與狀態(tài)。二進(jìn)制Buffer細(xì)節(jié)。(由于網(wǎng)絡(luò)和磁盤IO,因此需要處理字節(jié)流數(shù)據(jù)(buffer)),詳見我的筆記:nodejs深入學(xué)(7)理解Buffer |
| 七 | 本章是從網(wǎng)絡(luò)服務(wù)角度看待node的,即網(wǎng)絡(luò)編程相關(guān)知識(shí),例如tcp、udp、http、websocket、tls、https,詳見我的筆記:nodejs深入學(xué)(8)網(wǎng)絡(luò)編程 |
| 八 | Web(HTTP)開發(fā)相關(guān)知識(shí),例如數(shù)據(jù)處理、路由、mvc、模板、RESTful,詳見我的筆記:nodejs深入學(xué)(9)Web應(yīng)用 |
| 九 | 本章是從node單機(jī)集群的角度看待node的,即進(jìn)程間消息傳遞,多進(jìn)程技術(shù),借助多進(jìn)程的方式提升應(yīng)用的可用性和性能。詳見我的筆記:nodejs深入學(xué)(10)進(jìn)程 |
| 十 | 測(cè)試,這章講了單元測(cè)試、性能測(cè)試、基準(zhǔn)測(cè)試等,還描述了BDD的開發(fā)手法。詳見我的筆記:nodejs深入學(xué)(11)測(cè)試 |
| 十一 | 產(chǎn)品構(gòu)建,產(chǎn)品化需要注意的相關(guān)事項(xiàng),如項(xiàng)目工程化、代碼部署、日志、性能、監(jiān)控報(bào)警、穩(wěn)定性、異構(gòu)共存。nodejs深入學(xué)(12)產(chǎn)品化 |
| A | Node安裝,書中給的是編譯node源碼的方式進(jìn)行安裝,我沒有按照書里給的方式安裝node,我使用的是自己的方法,詳見我的文章:Linux下的快速安裝NodeJS,如果需要編譯請(qǐng)等待我后面整理的文章。 |
| B | node調(diào)試技巧,使用debugger或者Inspector,一般通過IDE就可以進(jìn)行安裝和使用。但是服務(wù)器上的debug比較麻煩,還是通過良好的單元測(cè)試和服務(wù)器日志進(jìn)行錯(cuò)誤排查。此處就不展開寫筆記了。此處看我寫的一個(gè)關(guān)于性能調(diào)優(yōu)的文章:思考一下node在服務(wù)上的代碼調(diào)試和性能調(diào)優(yōu),這個(gè)文章拋磚引玉,跟大家一起探討node的性能之道 |
| C | 編碼規(guī)范,此處我除了編碼規(guī)范,我還對(duì)es多個(gè)版本的特性進(jìn)行了梳理。詳見我寫的文章,橫向?qū)Ρ菶S5、ES6、ES7、ES8 |
| D | NPM倉(cāng)庫(kù)搭建及管理 |
后記
坊間最近流行了一個(gè)段子,說有個(gè)北京小哥,家里給了他30套房,小哥于是為每套房編了代號(hào),而且要求全部房客押一付一,于是,該北京小哥每天都會(huì)收一次房租,收到房租后就喝酒吃肉開火車。有人問,難道不能把房租在1~2日內(nèi)統(tǒng)一收齊嗎?或者通過轉(zhuǎn)賬的方式在線收付嗎?這北京小哥煞有介事的回應(yīng),不能,因?yàn)槿艘婚e下來,就廢了。
哈哈哈哈,雖然是個(gè)段子,但是,竟然有一種禪意在其中。人,真的是一閑下來就廢了嗎?我雖然不知道這閑下來,是有多閑才算,但是,人只有不閑,才能持續(xù)的改變,對(duì),是改變,而不一定是進(jìn)步,只有向?qū)Φ姆较蚋淖?,才是進(jìn)步。
讀書也好、學(xué)習(xí)工作也罷。有的時(shí)候,總感覺冥冥中有那么一種力量,在牽引著我,去尋找那未知的世界。我想這就是求知欲吧。我渴望從最本源去了解一個(gè)事物的全部,對(duì),我渴望從最本源去了解一個(gè)事物的全部?。?!