3dwoo大學簡體電腦書店
狼書(卷3):Node.js高級技術
( 簡體 字)
作者:狼叔類別:1. -> 程式設計 -> 網路編程 -> Node.js
出版社:電子工業出版社狼書(卷3):Node.js高級技術 3dWoo書號: 56154
詢問書籍請說出此書號!
有庫存
NT售價: 540
出版日:11/1/2022
頁數:340
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121353871 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章 自己動手寫npm模塊 1
1.1 基礎技能 1
1.1.1 環境變量 2
1.1.2 Zsh 2
1.1.3 Vim 3
1.1.4 Ack 4
1.1.5 Autojump 5
1.1.6 Git和GitHub 5
1.1.7 查詢文檔 6
1.2 編寫Node.js模塊 6
1.2.1 初始化模塊 6
1.2.2 普通模塊 7
1.2.3 二進制模塊 9
1.3 npm技巧 13
1.3.1 npm run 13
1.3.2 配置 13
1.3.3 鉤子 15
1.3.4 npm link 16
1.3.5 自定義安裝 16
1.3.6 模塊瘦身 17
1.3.7 postinstall 17
1.3.8 路徑 18
1.3.9 模塊依賴圖 20
1.4 實例講解 22
1.4.1 kp 22
1.4.2 je 27
1.4.3 lazyclone 30
1.5 編寫腳手架 31
1.5.1 初始化模塊 32
1.5.2 CLI二進制模塊 32
1.5.3 使用模板引擎 34
1.5.4 解析CLI參數和路徑 35
1.5.5 npm發布 40
1.6 開源周邊 40
1.6.1 持續集成 40
1.6.2 測試覆蓋率 45
1.6.3 徽章 45
1.6.4 反向學習 46
1.7 推薦模塊 46
1.7.1 debug 47
1.7.2 GitBook 48
1.7.3 colors和chalk 49
1.7.4 mkdirp 50
1.7.5 shelljs 50
1.7.6 moment 51
1.7.7 LRU緩存 52
1.7.8 semver 53
1.7.9 xtend 55
1.7.10 require-directory 56
1.7.11 yargs 57
1.8 本章小結 59
第2章 自己動手編寫企業級Web開發框架 60
2.1 特色Web框架 60
2.1.1 LoopBack 61
2.1.2 Nest 63
2.1.3 ThinkJS 66
2.1.4 Egg.js 69
2.1.5 Next.js 70
2.1.6 Redwood 72
2.1.7 strapi 76
2.2 自己動手寫框架 78
2.2.1 基礎知識 78
2.2.2 生成項目 81
2.2.3 添加Mongoose 91
2.2.4 添加MVC目錄 96
2.2.5 庖丁解Views 103
2.2.6 腳手架 112
2.2.7 靜態API模擬 114
2.2.8 更多實踐 122
2.3 本章小結 127
第3章 構建具有Node.js特色的服務 128
3.1 服務概覽 128
3.1.1 架構演變 128
3.1.2 從大而全到小而美 129
3.1.3 微服務應用 131
3.1.4 BFF中間層 134
3.1.5 SFF托管 137
3.2 使用Node.js優化頁面渲染 140
3.2.1 BigPipe 140
3.2.2 服務器端渲染(SSR) 150
3.2.3 漸進式Web應用(PWA) 153
3.2.4 同構開發 158
3.3 頁面即服務 162
3.3.1 頁面獨立 162
3.3.2 模塊拆分 164
3.3.3 BigView 165
3.3.4 API Proxy 175
3.3.5 源碼說明 176
3.4 使用Node.js開發RPC服務 178
3.4.1 RPC原理 178
3.4.2 通信層協議設計 179
3.4.3 如何實現RPC通信協議 180
3.4.4 DNode 181
3.4.5 Senaca 182
3.4.6 Moleculer 185
3.4.7 通用RPC 189
3.4.8 服務發現與治理 190
3.4.9 典型用法 192
3.5 使用Node.js開發獨立的API層 193
3.5.1 GraphQL 193
3.5.2 Micro框架 197
3.5.3 API網關 197
3.5.4 在線服務 199
3.6 本章小結 199
第4章 服務器部署與性能調優 200
4.1 服務器部署 200
4.1.1 服務器選購 201
4.1.2 手動部署 204
4.1.3 通過Docker部署 211
4.1.4 自動部署 224
4.1.5 APM與監控 231
4.2 性能調優 239
4.2.1 基礎知識 239
4.2.2 立體分析 246
4.2.3 深度性能調優 250
4.3 分析Easy-monitor 260
4.4 本章小結 262
第5章 測試、開源與自學 263
5.1 測試入門 264
5.1.1 什么是測試 264
5.1.2 TDD和BDD 265
5.1.3 最小化問題 268
5.1.4 Baretest 269
5.1.5 TAP和Tape 271
5.1.6 Mocha 274
5.1.7 Jest 278
5.2 測試進階 283
5.2.1 測試的好處 283
5.2.2 紅到綠工作流 284
5.2.3 Cucumber 285
5.2.4 Spy、Stub和Mock 288
5.2.5 持續集成 291
5.2.6 如何編寫測試框架 292
5.2.7 如何打造開源項目 293
5.2.8 進一步學習TypeScript 294
5.3 開源帶來的機會和思考 310
5.3.1 Clipanion 310
5.3.2 機會與挑戰 312
5.3.3 敏感且會學 313
5.3.4 成就更好的自己 313
5.4 本章小結 314
Node.js開發簡單,性能極好,一經發布便成了明星級項目。隨著大前端領域的蓬勃發展,跨平臺開發、API構建、Web應用開發等場景愈加常見,Node.js也成為大前端開發的必備“神器”。本書聚焦于Node.js高級技術。第1章介紹如何編寫npm模塊,其中涉及對許多常用模塊的解析。第2章介紹如何編寫企業級Web開發框架,主要剖析了開發框架的流程。第3章介紹如何構建具有Node.js特色的服務,著重講解了頁面即服務的概念。第4章介紹服務器部署與性能調優的相關知識。第5章介紹TDD和BDD理念,以及如何編寫測試用例,同時分享了筆者關于開源和自學的看法。基于Node.js不斷進階,實現高級應用開發是符合技術趨勢的,也是全棧工程師必須掌握的技能。因此,各位大前端領域及后端領域的測試、運維、軟件開發從業者都適合閱讀本書。
推薦序1
提起國內的Node.js布道師,我腦海中出現的第一個名字就是狼叔(i5ting)。
狼叔從2015年開始活躍于CNode社區,累計發表文章200余篇,主題豐富多樣——Node.js底層原理、npm目錄結構改進、前后端分離實踐、全棧工程師之路等。這幾年間,狼叔同時運營著自己的微信公眾號“Node全棧”,筆耕不輟,源源不斷地將最新鮮、最“硬核”的資訊分享給國內的開發者們。不得不說,他的這種樂于分享的精神,實屬難得。
我與狼叔也是在2015年相識的。2015年是Node.js的普及度呈爆發式增長的一年,但那一年的Node.js還遠遠談不上被廣泛使用。當時我在阿里巴巴數據平臺任職,我們所做的部分項目的JavaScript壓縮工具和測試覆蓋率工具還是用Java實現的,這在現在看來可以說是非常匪夷所思的,JavaScript工作流中的工具竟然還有用Java而不是用Node.js實現的!
時過境遷,轉眼多年過去,JavaScript在大前端領域遍地開花,Node.js也已經被廣泛應用于Web開發的方方面面,成了Web開發流程中不可或缺的部分。大家不再懷疑Node.js能不能用,而是開始思考該如何用Node.js實現我們想要的功能。
技術的好與壞,不僅僅在于技術本身具有什么優勢。布道如果做得不好,酒香也怕巷子深。技術的進步與受眾群體的反饋是相互促進的。Node.js在國內逐漸生根發芽的這幾年,狼叔無疑是推廣該技術的中堅力量。
經過多年的積累和沉淀,狼叔帶著他的新書與大家見面了。這本書內容循序漸進、概念清晰明了、技術描述有點有面,是一本理論架構完整且實戰案例典型的好書!相信各位讀者能夠從中獲益!
最后,衷心祝愿Node.js發展得越來越好,也祝愿狼叔的布道事業蒸蒸日上!
CNode社區管理員,alsotang

推薦序2
在狼叔邀請我為他的新書寫推薦的時候,我的內心是忐忑的,因為我對Node.js并不熟悉,不是這方面的專家。但對于狼叔我是了解的,同為技術社區推動者和文字愛好者,我深知在國內要寫一本嚴肅的技術圖書是一件多么吃力不討好的事情。正因如此,狼叔的這本書就更值得推薦給正在學習Node.js的工程師們。
2009年,Node.js剛剛誕生,那時我就接觸到了它。后來,Node.js的迭代和進步之快完全超出了我的預期,它變得越來越好用,逐漸成為全棧工程師的首選。這樣的結果離不開強大、活躍的Node.js社區和無私的Node.js貢獻者們的付出,而狼叔就是國內Node.js貢獻者的代表。
有了Node.js,前端工程師也可以編寫后端程序,并成為手機應用的跨平臺開發主力。客戶端、前端和服務器端已呈現出大統一趨勢。在我自己熟悉的Web服務器開發領域,可以說Nginx內置的njs就是沖著替代OpenResty這一目標迅速發展的。
在這種技術趨勢下,學習JavaScript和Node.js無疑是一個性價比很高的選擇。這樣一來,我們便可以打通從移動應用、Web應用到服務器端接口的整條鏈路。而學習一門技術最好的方式,就是選擇一本好書。
寫一本好書對作者的要求很高——技術功底扎實只是基礎,更要有豐富的項目經驗、深厚的文字功底和洞察讀者心理的能力。平日里像“詩人”一樣的狼叔絕對是為數不多的具備上述能力的“牛人”,所以我相信他寫的書也一定是一本好書。希望大家能通過這本好書提升自己的技術水平。
學習從來不是一件容易的事,但卻是一件快樂的事,共勉。
支流科技創始人& CEO、Apache PPMC,溫銘

推薦序3
1995年,Brendan Eich花了10天時間開發出了一門腳本語言,該語言可用于彌補Java Applets的不足,隨后Marc Andreessen將這門語言命名為Mocha。Mocha的最初定位是,服務于測試腳本編寫人員、業余編程愛好者、設計師。
同年5月,Mocha被集成到了Netscape瀏覽器中,不久后其被更名為LiveScript。同年年底,Netscape公司和Sun公司達成協議并獲得了Java商標的使用權,于是LiveScript正式被更名為JavaScript。
有人覺得,正是因為更名為JavaScript才使這門語言成了瀏覽器執行的唯一語言。但時至今日,JavaScript已經不僅僅局限于實現網頁特效了,而真正發展成了一門全功能的編程語言。
2009年,Joyent公司的一名軟件工程師Ryan Dahl開發了Node.js,這是一個基于Chrome V8引擎的JavaScript運行時環境。Node.js使得JavaScript擁有了操作文件系統、I/O、網絡,甚至數據庫的能力。雖然Node.js不是第一個將JavaScript帶離瀏覽器的工具,但它無疑是最成功的一個。
如今,Node.js社區已經成了最活躍的編程社區之一,其npm的包數量也已經超越了Java的Maven、Ruby的Gem、PHP的Composer。
狼叔是國內最早一批的Node.js使用者,也是Node.js社區最活躍的布道者之一。多年前狼叔來天津創業,我有緣與他結識。在那之前我就已經拜讀過狼叔的文章,而當時狼叔就曾與我談起要寫一本關于Node.js的書。說來也巧,Node.js于2009年發布,而《金剛狼》系列電影也于2009年開始上映。《金剛狼》系列電影一共3部,而狼叔的《狼書》系列圖書也有3卷,希望《狼書》系列圖書能如《金剛狼》系列電影一樣受到歡迎。
目前Node.js發展十分迅速,但很大一部分使用者是前端開發人員。和Java、Python、Ruby等后端語言對比,尤其在圖書出版方面,Node.js還需要持續深入,而《狼書》系列圖書的面世正好彌補了這一方面的不足——第1卷系統全面地介紹Node.js基礎,第2卷著重介紹Node.js Web應用開發技能,第3卷則側重于Node.js的高級應用。如果你想深入學習Node.js的核心原理并掌握使用Node.js開發大型系統的要訣,那么這套書非常值得你精讀。
Flarum中文社區創始人,迷渡(justjavac)

推薦序4
俗話說,十年磨一劍,慢工出細活。狼叔撰寫的《狼書》系列圖書很好地詮釋了這兩句話。
眾所周知,狼叔是Node.js布道者、“Node全棧”微信公眾號的作者,他活躍于CNode社區,組織了不少線下Node.js沙龍,同時常作為講師在各種技術交流會上進行分享,為Node.js在國內的推廣做出了很大的貢獻。我覺得這是一種情懷,也是一種責任。當你愛上一件事,你就會全情投入。
Node.js的出現在很大程度上滿足了前端工程師想要探索更廣闊的編程世界的愿望,為前端工程師提供了更好的了解后端工作的機會,對于前后端協同而言具有巨大價值。十幾年時間,Node.js幾經波折,但這并不妨礙它快速發展,如今它已經成為最流行的技術之一。
近些年,不少大型互聯網公司都開始基于Node.js構建應用。我和狼叔在去哪兒網相識,平時和他對話或閑聊,最后總能聊到Node.js上,我能深切地感受到他對Node.js的熱愛。那時候的狼叔正在努力為去哪兒網建設更完善的Node.js基礎設施,他的努力為去哪兒網注入了新鮮活力,加快了Node.js在機票購買業務中的落地。
《狼書》系列圖書正是狼叔Node.js情懷的最終寄托。這本第3卷聚焦于Node.js高級技術,幾經雕琢終于面世,很好地承載了狼叔對Node.js的熱愛,將開發npm模塊、編寫企業級Web開發框架、服務器部署、測試、開源等熱門話題娓娓道來,就像一杯陳酒,越品越有味道。我相信每一位拿到此書的讀者都會有不同的收獲,無論你是初入前端領域的“小白”,還是深耕多年的“老手”。
美團研究員,杜瑤

自序
《狼書》系列從2015年10月開始撰寫。
在那之前,我還在天津創業,頂著CTO的頭銜干著各種最基礎的編碼工作。由于公司在天津的位置很偏僻,所以公司招人成了一個大問題。更要命的是,創始人沒有工資可拿,現在想想只能說是情懷在支撐我吧。
公司招人不便,那就只能想辦法把人才從北上廣拉到天津,于是我就動了擴大技術影響力的心思——我開始在CNode社區上發帖,后面慢慢嘗試做“Node全棧”微信公眾號,效果還不錯。我還記得CNode社區管理員、知名Node.js開發者alsotang曾評論過我的一篇文章,說我是Node.js布道者。當時我臭美了很久,之后便自然而然地走上了Node.js布道之路。
2015年,我結婚了,財權上交,發覺生活窘迫,又不好意思向老婆要錢,于是便開始在網上教授VSCode,之后我又和極客邦旗下的StuQ合作講課,獲得收入的同時又可以進一步擴大技術影響力。而技術影響力擴大的體現就是,我被出版社的編輯發現了。由于早有布道的心思,自然希望能夠出一本書,于是我便開始了寫書之旅。
可是寫書從來都不是一件容易的事。閱歷淺,寫不來;無恒心,寫不來。從我萌生寫書的想法至今,Node.js穩定、高效地發布了多個版本,國內外的Node.js使用率也漸漸達到了一個前所未有的高度。這些年里,很多朋友催書,以至于我經常在演講中“自黑”:“我的書從Node.js 4.0版本寫到Node.js 8.0版本,然而還沒有寫完。”出版社約稿時,Node.js才剛剛發布4.0版本;2019年年初《狼書(卷1):更了不起的Node.js》撰寫完成時,Node.js發布了11.10版本;到2022年10月,Node.js版本已經來到18.10。
最終,本書確定以Node.js 8.0為核心版本。雖然后面Node.js的更新版本里又增加了新功能,但整體來看,Node.js的API設計得非常好,幾乎都是向后兼容的,所以即使是18.10版本在使用上和8.0版本的差別也不大。
2019年7月,《狼書(卷1):更了不起的Node.js》和大家見面了。2019年12月,《狼書(卷2):Node.js Web應用開發》出版。原以為,《狼書(卷3):Node.js高級技術》也會在不久之后與大家見面,卻未曾想2020年有很多突如其來的變化,影響了這本書的出版計劃。經過我的深思熟慮,覺得不如趁此機會將書中原本的陳舊內容推翻,再加上一些新的感悟。于是,我又開始重新創作,刪刪改改,迭代了一輪又一輪……很抱歉,時隔三年,《狼書(卷3)》才與各位讀者見面。
人生之美好就是在苦難之后能夠獲得成果。寫書的過程是痛苦的,但也讓我對“成就別人才能成就自己”這句話有了更深刻的認識。最開始寫書是為了布道,希望更多人能從中受益,沒想到最先受益的是自己。通過長時間的積累,我完善了自己的知識體系,受益匪淺。通過與CNode社區、出版社的編輯及Node.js愛好者們交流,我有了更好的學習機會。通過寫書、演講、組織社區活動,我有了更豐富的人生經歷。
以前見到圖書的前言中總有致謝話語,還以為只是出版“套路”。然而今時今日,歷經多年的寫作,我確確實實要感謝很多人。
感謝我的家人,寫書會犧牲很多陪伴家人的時間,感謝他們的理解和支持。最難過的是周一到周五,只能看老婆通過微信發來的寶寶的視頻,一遍一遍地看,一遍一遍地想哭。
感謝所有推薦本書及為本書進行技術審校的專家們,若沒有他們的幫助,這本書恐怕無法以最佳狀態與各位讀者見面。他們的寶貴建議使得本書的內容不至于空洞,也讓我受益良多。
感謝博文視點的張春雨編輯和孫奇俏編輯,他們一次次地叮囑我、鼓勵我,面對面指導我如何規范寫作,這種耐心和包容是極其難得的。在本書的審校初期,我是崩潰的——感覺自己數學不好,常常上面說3項下面列4項;語文也不好,連基本的語句都表達不清,很符合那句玩笑話“你的語文是體育老師教的吧”。我能夠想象編輯們在修改書稿之時是多么“痛苦”,因此再次感謝兩位編輯,感謝他們的辛苦付出,因為有他們,本書才能夠順利出版。
回想這幾年的寫作過程,其實幾次都想放棄,想將Node.js系統地講明白,真的不是一件容易的事。可是話都說出去了,不想讓一直以來支持我的讀者失望,更不能自己“打臉”,所以,這本書最終還是跟大家見面了,《狼書》系列也終于完整地呈現在大家面前了!感謝各位粉絲在各個技術群里“花式”催書,感謝他們對我的鞭策。
再次感謝所有的小伙伴們。
致所有未見面的讀者,但愿狼叔的“碎碎念”能夠帶你們打開Node.js世界的大門,領略大前端領域璀璨的星光。

狼叔
2022年10月

前言
起初,《狼書》是一本書,而不是系列圖書。我想將自己對Node.js知識體系的理解進行總結,融入書中。然而,Node.js領域涉及的知識非常廣泛,以至于寫著寫著就寫了1000頁。于是,我和編輯商定,將《狼書》拆分成了3本書。其中,卷1重點講Node.js應用場景和入門,卷2重點講以下一代框架Koa為核心的Web開發,卷3重點講與實操相關的Node.js高級技術。
在Node.js世界里,高級技術并不是很多人理解的線上問題解決方案。本書中定義的高級技術,是讓更多Node.js新人更容易上手的技術,是由新手變成經驗豐富的高級工程師這一過程中需要掌握的技術。本書聚焦于實用高級技術,讓大家可以邊閱讀邊動手實踐。所謂“授人以魚不如授人以漁”,這也是我撰寫本書的目的。
本書內容
本書以Node.js高級技術為核心,主要講解如何開發npm模塊、如何編寫企業級Web開發框架、如何構建具有Node.js特色的服務,還介紹了與服務器部署、性能調優、測試、開源等相關的內容。
本書共分5章,每章的內容簡介如下。
第1章 自己動手寫npm模塊
本章將介紹編碼中常用的基本技能,如Ack、Autojump等常用命令,如何編寫Node.js模塊,各種npm使用技巧等。本章精選3個實例,詳細講解模塊編寫方法及腳手架寫法,同時推薦了多個實用模塊,如debug、mkdirp、shelljs等。
第2章 自己動手編寫企業級Web開發框架
本章將介紹在實際項目中更為常用的企業級Web開發框架的腳手架寫法。首先介紹Node.js領域常用的特色Web開發框架,讓讀者對Web框架有一個大致了解,然后介紹自己動手實現企業級Web框架的流程和注意事項,涉及腳手架開發、目錄設計、模板開發、靜態API模擬等。
第3章 構建具有Node.js特色的服務
本章將介紹基于Node.js構建的服務,包括微服務、BFF、SFF、SSR等,細致介紹服務器端常用架構,并完整講解Node.js服務的構建流程和注意事項。其中,使用Node.js開發RPC服務和API服務是比較有特色的內容,頁面即服務概念是各位讀者需要重點掌握的。
第4章 服務器部署與性能調優
本章將介紹如何在云環境中完成Node.js服務器部署并實現各種性能調優方法。性能調優是一個宏大的話題,涉及的知識點非常廣泛。本章介紹性能調優基礎知識、立體分析和深度調優,更對0x、Easy-Monitor、Clinic、AliNode等常用工具的用法和性能進行了對比。
第5章 測試、開源與自學
本章將介紹測試入門、測試進階和開源帶來的機會。測試可以最小化問題,聚焦解決難點,這和通過開源進行自主學習有一定的相似性。因此,筆者將測試、開源、自學結合在一起,希望讀者閱讀本章內容后能有新的感悟,成長為更好的開發者。
本書中的各章內容基本是相互獨立的,因此各位讀者可以挑選自己感興趣的章節閱讀。這本書是《狼書》系列圖書的第3卷,第1卷主要介紹Node.js基礎知識,第2卷主要介紹Node.js Web應用開發。三卷搭配閱讀,效果更好。
目標讀者
本書的目標讀者有以下三類。
?正在學習JavaScript開發,對JavaScript語言有基本的了解和熟悉度,且希望能夠了解JavaScript發展情況的人。
?正從事JavaScript開發相關工作,熟悉JavaScript的基本開發要領,在日常工作中經常接觸Node.js,想要深入了解Web應用、BFF、API代理等內容,以進一步提升自我的Web工程師(此處不區分前端與后端)。
?具有極客精神,想要深入研究JavaScript語言及Node.js的全棧工程師。
閱讀準備
要想運行本書中的示例,需要安裝以下系統及軟件。
?操作系統:推薦Linux,以及macOS 10.9或以上版本,使用Windows操作系統可能會在運行示例時報錯。
?瀏覽器:Google Chrome、Safari、Firefox、Internet Explorer 11、Windows Edge。
?運行環境:Node.js 8.x至Node.js 18.x均可。
pagetop