內容簡介
本書是位元組跳動前端工程師嘔心瀝血之作,也是目前市場上少有的從原理到實戰深度剖析JavaScript生態中經典工具庫的技術圖書。
全書共有6篇,分別是基礎篇、圖形學篇、多媒體篇、跨端開發篇、遊戲開發篇和跨界實踐篇,書中不僅詳細介紹了JavaScript語言在流覽器頁面之外的不同應用場景,從實用技巧、設計理念、原理源碼等角度對精心挑選的30多個工具庫進行了的解析,希望讀者在領略JavaScript代碼之美的同時,也能拓寬技術視野。為了幫助讀者好地理解書中所講述的內容,隨書代碼倉庫裡提供了大量可運行的源碼,包括精簡版的庫重寫和完整的代碼示例。
作者介紹
目錄
前言
基礎篇
第1章Mock.js:如何與後端瀟灑分手2
1.1為什麼你總是下不了班3
1.2聯調加速4
1.3使用Mock.js4
1.3.1Mock.js的語法規範5
1.3.2Mock.js實戰6
1.3.3自訂擴展8
1.4Mock.js的基本原理9
1.4.1從範本到資料9
1.4.2為Ajax請求提供Mock資料11
1.5從Mock服務到API管理平臺14
第2章Node.js:連接16
2.1大話Node.js16
2.1.1Node.js是什麼16
2.1.2Node.js能做什麼17
2.1.3招黑的JavaScript全棧工程師19
2.2業界用Node.js做什麼19
2.2.1前端工程化20
2.2.2中間層20
2.2.3SSR引擎21
2.2.4協作連接22
2.3小結22
第3章ESLint:你的代碼裡藏著你的優雅24
3.1代碼風格與破窗理論25
3.2用editorconfig配置IDE28
3.2.1基本語法及屬性29
3.2.2配置實例29
3.3使用ESLint規範程式設計風格30
3.3.1設定檔和規則集30
3.3.2ESLint外掛程式開發實戰32
3.3.3初學者的修行32
3.4新秀工具Prettier33
3.5靜態類型檢查工具的實現原理34
3.5.1編譯語言和解釋語言34
3.5.2編譯流程34
3.5.3編譯簡單的JavaScript程式35
第4章模組演義與Require.js39
4.1模組化的需求推演40
4.1.1script標籤40
4.1.2代碼隔離41
4.1.3依賴管理42
4.2模組規範大雜燴43
4.2.1概述43
4.2.2幾個重要的差異44
4.3模組化規範的相容與工具演進48
4.4Require.js的使用方法50
4.5Require.js的核心原理52
第5章Lodash.js是工具,是秘笈55
5.1Lodash.js是什麼55
5.1.1概述56
5.1.2代碼的較量56
5.2重點API的剖析59
5.3Lodash.js的源碼結構62
5.3.1基本結構62
5.3.2Lodash.js源碼的學習方法63
第6章靜態類型檢查:Flow.js和TypeScript64
6.1靜態類型檢查65
6.1.1靜態類型檢查的優勢65
6.1.2靜態類型檢查的劣勢66
6.2Flow.js,易上手的靜態類型檢查工具67
6.2.1Flow.js中的類型標注67
6.2.2Flow.js的優勢68
6.3TypeScript,另一種選擇69
第7章用函數描述世界:Ramda.js71
7.1本能的思考方式71
7.2開始編碼72
7.2.1傳程的實現72
7.2.2函數式程式設計的推演73
7.2.3函數式程式設計的意義76
7.2.4函數式程式設計的基本理論77
7.3基於Ramda.js體驗函數式程式設計79
7.3.1使用Ramda.js80
7.3.2函數化的流程控制81
7.4選擇82
第8章Rxjs:前端世界的“老人與海”83
8.1信息管道84
8.1.1不同的“單一職責”84
8.1.2分散式狀態的可能性86
8.1.3你的程式在做什麼87
8.2資料的生產88
8.2.1資料來源的抽象88
8.2.2設計模式的應用90
8.3Rxjs:一切皆是流的世界91
8.3.1Rxjs的核心概念92
8.3.2Rxjs應用實例94
8.3.3新版“老人與海”100
8.4以自己喜歡的方式去程式設計101
第9章不可變資料的製造藝術:Immer.js和Immutable.js102
9.1克隆103
9.1.1淺克隆103
9.1.2深克隆103
9.2元程式設計與Immer.js104
9.2.1元程式設計105
9.2.2Immer.js的核心原理106
9.3Immutable.js與共用結構112
9.3.1Immutable.js簡介113
9.3.2Immutable.js的核心原理113
9.3.3Immutable.js中的讀寫操作117
9.4小結119
第10章Day.js:算個日期能有多難121
10.1日期和時間121
10.2使用Day.js125
10.3化應用開發中的時間處理127
圖形學篇
第11章所見即所得的流程圖:jsplumb.js和viz.js130
11.1方案構思130
11.2開始使用jsplumb.js132
11.3圖佈局引擎viz.js135
11.4所見即所得137
第12章easel.js:一個標籤一個世界139
12.1能玩一生的標籤