現(xiàn)代JavaScript庫開發(fā):原理、技術(shù)與實戰(zhàn)
定 價:108 元
- 作者:顏海鏡
- 出版時間:2022/11/1
- ISBN:9787121445125
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:364
- 紙張:
- 版次:01
- 開本:16開
開發(fā)JavaScript庫是入門前端領(lǐng)域的重要一步。本書旨在幫助前端開發(fā)者掌握現(xiàn)代JavaScript庫的開發(fā)技術(shù),讓每個人都可以開源自己的現(xiàn)代JavaScript庫。本書系統(tǒng)介紹了現(xiàn)代JavaScript庫開發(fā)涉及的技術(shù)、原理和最佳實踐,以及將庫開源后如何做好維護工作。在最佳實戰(zhàn)部分,本書選取了9個典型庫作為案例,展示開發(fā)流程,代碼清晰、完善。 本書既適合對現(xiàn)代JavaScript庫開發(fā)及開源感興趣的前端開發(fā)者閱讀,也適合想要學習前端項目開發(fā)技術(shù)的初學者閱讀。
顏海鏡,知名技術(shù)博主,微信公眾號“顏海鏡”作者。擁有十年以上開源經(jīng)驗,在GitHub上擁有關(guān)注者(followers)5100余名,維護了jsmini、jslib-base、template.js、zepto.fullpage等多個開源項目,獲得了6500個以上的GitHub Star。具有多年一線大廠從業(yè)經(jīng)驗,曾先后就職于金山、百度、美團等知名企業(yè),負責前端開發(fā)工作。著有《React狀態(tài)管理與同構(gòu)實戰(zhàn)》。侯策,就職于某內(nèi)容社區(qū)類互聯(lián)網(wǎng)上市公司,具有多年海內(nèi)外工作經(jīng)驗,曾先后就職于法國ENGIE集團、Google、百度等知名企業(yè)。擅長前端工程化體系搭建及基礎(chǔ)建設(shè)架構(gòu)設(shè)計。著有《React狀態(tài)管理與同構(gòu)實踐》《前端開發(fā)核心知識進階:從夯實基礎(chǔ)到突破瓶頸》《前端架構(gòu)師:基礎(chǔ)建設(shè)與架構(gòu)設(shè)計思想》等多部技術(shù)圖書。
目錄
第1章 從零開發(fā)一個JavaScript庫 1
1.1 如何開始 1
1.2 編寫代碼 2
1.3 本章小結(jié) 5
第2章 構(gòu)建 6
2.1 模塊化解析 6
2.1.1 什么是模塊 7
2.1.2 原始模塊 7
2.1.3 AMD 8
2.1.4 CommonJS 9
2.1.5 UMD 9
2.1.6 ES Module 10
2.2 技術(shù)體系解析 11
2.2.1 傳統(tǒng)體系 12
2.2.2 Node.js體系 13
2.2.3 工具化體系 14
2.3 打包方案 17
2.3.1 選擇打包工具 18
2.3.2 打包步驟 19
2.3.3 添加banner 23
2.3.4 按需加載 24
2.4 兼容方案 26
2.4.1 確定兼容環(huán)境 26
2.4.2 ECMAScript 5兼容方案 28
2.4.3 ECMAScript 2015兼容方案 30
2.5 完整方案 33
2.6 本章小結(jié) 35
第3章 測試 36
3.1 第一個單元測試 36
3.2 設(shè)計測試用例 39
3.2.1 設(shè)計思路 39
3.2.2 編寫代碼 40
3.3 驗證測試覆蓋率 42
3.3.1 代碼覆蓋率 42
3.3.2 源代碼覆蓋率 44
3.3.3 校驗覆蓋率 46
3.4 瀏覽器環(huán)境測試 48
3.4.1 模擬瀏覽器環(huán)境 48
3.4.2 真實瀏覽器測試 49
3.4.3 自動化測試 51
3.5 本章小結(jié) 53
第4章 開源 54
4.1 選擇開源協(xié)議 54
4.2 完善文檔 56
4.2.1 README 57
4.2.2 待辦清單 59
4.2.3 變更日志 59
4.2.4 API文檔 60
4.3 發(fā)布 61
4.3.1 發(fā)布到GitHub上 61
4.3.2 發(fā)布到npm上 62
4.3.3 下載安裝包 66
4.4 統(tǒng)計數(shù)據(jù) 66
4.4.1 GitHub數(shù)據(jù) 66
4.4.2 npm數(shù)據(jù) 67
4.4.3 自定義數(shù)據(jù) 69
4.5 本章小結(jié) 70
第5章 維護 71
5.1 社區(qū)協(xié)作 71
5.1.1 社區(qū)反饋 72
5.1.2 社區(qū)協(xié)作 76
5.1.3 社區(qū)運營 77
5.2 規(guī)范先行 79
5.2.1 編輯器 79
5.2.2 格式化 82
5.2.3 代碼Lint 88
5.2.4 提交信息 96
5.3 持續(xù)集成 102
5.3.1 GitHub Actions 103
5.3.2 CircleCI 111
5.3.3 Travis CI 114
5.4 分支模型 115
5.4.1 主分支 115
5.4.2 功能分支 116
5.4.3 故障分支 119
5.4.4 Pull request 120
5.4.5 標簽與歷史 121
5.5 本章小結(jié) 123
第6章 設(shè)計更好的JavaScript庫 124
6.1 設(shè)計更好的函數(shù) 124
6.1.1 函數(shù)命名 124
6.1.2 參數(shù)個數(shù) 125
6.1.3 可選參數(shù) 126
6.1.4 返回值 126
6.2 提高健壯性 127
6.2.1 參數(shù)防御 127
6.2.2 副作用處理 129
6.2.3 異常捕獲 130
6.3 解決瀏覽器兼容性問題 131
6.3.1 String 132
6.3.2 Array 132
6.3.3 Object 134
6.4 支持TypeScript 134
6.5 本章小結(jié) 137
第7章 安全防護 138
7.1 防護意外 138
7.1.1 最小功能設(shè)計 138
7.1.2 最小參數(shù)設(shè)計 140
7.1.3 凍結(jié)對象 141
7.2 避免原型入侵 142
7.2.1 面向?qū)ο蠡A(chǔ)知識 142
7.2.2 原型之路 143
7.2.3 原型入侵 145
7.3 原型污染事件 147
7.3.1 漏洞原因 148
7.3.2 詳解原型污染 148
7.3.3 防范原型污染 151
7.3.4 JSON.parse補充 152
7.4 依賴的安全性問題 152
7.4.1 庫的選擇 153
7.4.2 正確區(qū)分依賴 154
7.4.3 版本問題 156
7.4.4 依賴過期 157
7.4.5 安全檢查 158
7.5 本章小結(jié) 160
第8章 抽象標準庫 161
8.1 類型判斷 161
8.1.1 背景知識 161
8.1.2 抽象庫 166
8.2 函數(shù)工具 169
8.2.1 once 170
8.2.2 curry 170
8.2.3 pipe 171
8.2.4 compose 172
8.3 數(shù)據(jù)拷貝 174
8.3.1 背景知識 174
8.3.2 最簡單的深拷貝 176
8.3.3 一行代碼的深拷貝 178
8.3.4 破解遞歸爆棧 178
8.3.5 破解循環(huán)引用 180
8.3.6 性能對比 183
8.4 相等性判斷 187
8.4.1 背景知識 187
8.4.2 抽象庫 195
8.5 參數(shù)擴展 200
8.5.1 背景知識 200
8.5.2 抽象庫 202
8.6 深層數(shù)據(jù) 205
8.6.1 背景知識 205
8.6.2 抽象庫 209
8.7 本章小結(jié) 214
第9章 命令行工具 215
9.1 系統(tǒng)設(shè)計 215
9.2 標準命令行工具 217
9.3 交互界面 225
9.4 初始化功能 234
9.4.1 代碼架構(gòu) 236
9.4.2 公共邏輯 237
9.4.3 模塊設(shè)計 242
9.5 命令行顏色 249
9.6 進度條 251
9.7 發(fā)布 256
9.8 本章小結(jié) 257
第10章 工具庫實戰(zhàn) 258
10.1 問題背景 258
10.2 代碼實現(xiàn) 260
10.2.1 字符串操作 260
10.2.2 數(shù)組操作 262
10.2.3 對象操作 265
10.2.4 URL參數(shù)處理 268
10.3 搭建文檔 269
10.4 ESLint插件 274
10.4.1 type-typeof-limit 276
10.4.2 type-instanceof-limit 281
10.4.3 no-same-function 282
10.4.4 recommended 284
10.4.5 發(fā)布 285
10.5 數(shù)據(jù)統(tǒng)計 285
10.5.1 統(tǒng)計接入項目 285
10.5.2 下載量 286
10.5.3 包和函數(shù)被引用的次數(shù) 287
10.6 本章小結(jié) 292
第11章 前端模板庫實戰(zhàn) 293
11.1 系統(tǒng)搭建 293
11.1.1 背景知識 293
11.1.2 搭建項目 295
11.2 解析器 300
11.3 即時編譯器 305
11.4 預編譯器 309
11.5 webpack插件 317
11.6 VS Code插件 323
11.7 發(fā)布 329
11.8 本章小結(jié) 330
第12章 未來之路 331
12.1 全景圖 331
12.1.1 知識全景圖 331
12.1.2 技術(shù)全景圖 332
12.2 下一代技術(shù) 333
12.2.1 TypeScript 333
12.2.2 Deno 334
12.2.3 SWC 334
12.2.4 esbuild 335
12.2.5 Vite 335
12.3 本章小結(jié) 336