現代 JavaScript 庫開發:原理、技術與實戰

顏海鏡//侯策

買這商品的人也買了...

商品描述

開發JavaScript庫是入門前端領域的重要一步。
本書旨在幫助前端開發者掌握現代JavaScript庫的開發技術,讓每個人都可以開源自己的現代JavaScript庫。
本書系統介紹了現代JavaScript庫開發涉及的技術、原理和最佳實踐,以及將庫開源後如何做好維護工作。
在最佳實戰部分,本書選取了9個典型庫作為案例,展示開發流程,代碼清晰、完善。
本書既適合對現代JavaScript庫開發及開源感興趣的前端開發者閱讀,也適合想要學習前端項目開發技術的初學者閱讀。

作者簡介

顏海鏡
知名技術博主,微信公眾號“顏海鏡”作者。
擁有十年以上開源經驗,在GitHub上擁有關注者(followers)5100餘名,
維護了jsmini、jslib-base、template.js、zepto.fullpage等多個開源項目,獲得了6500個以上的GitHub Star。
具有多年一線大廠從業經驗,曾先後就職於金山、百度、美團等知名企業,負責前端開發工作。
著有《React狀態管理與同構實戰》。


侯策
就職於某內容社區類互聯網上市公司,具有多年海內外工作經驗,
曾先後就職於法國ENGIE集團、Google、百度等知名企業。
擅長前端工程化體系搭建及基礎建設架構設計。
著有《React狀態管理與同構實踐》《前端開發核心知識進階:從夯實基礎到突破瓶頸》
《前端架構師:基礎建設與架構設計思想》等多部技術圖書。

目錄大綱

目錄
第1章從零開發一個JavaScript庫 1
1.1 如何開始 1
1.2 編寫代碼 2
1.3 本章小結 5
第2章構建 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 技術體系解析 11
2.2.1 傳統體系 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 確定兼容環境 26
2.4.2 ECMAScript 5兼容方案 28
2.4.3 ECMAScript 2015兼容方案 30
2.5 完整方案 33
2.6 本章小結 35
第3章測試 36
3.1 第一個單元測試 36
3.2 設計測試用例 39
3.2.1 設計思路 39
3.2.2 編寫代碼 40
3.3 驗證測試覆蓋率 42
3.3.1 代碼覆蓋率 42
3.3.2 源代碼覆蓋率 44
3.3.3 校驗覆蓋率 46
3.4 瀏覽器環境測試 48
3.4.1 模擬瀏覽器環境 48
3.4.2 真實瀏覽器測試 49
3.4.3 自動化測試 51
3.5 本章小結 53
第4章開源 54
4.1 選擇開源協議 54
4.2 完善文檔 56
4.2.1 README 57
4.2.2 待辦清單 59
4.2.3 變更日誌 59
4.2.4 API文檔 60
4.3 發布 61
4.3.1 發佈到GitHub上 61
4.3.2 發佈到npm上 62
4.3.3 下載安裝包 66
4.4 統計數據 66
4.4.1 GitHub數據 66
4.4.2 npm數據 67
4.4.3 自定義數據 69
4.5 本章小結 70
第5章維護 71
5.1 社區協作 71
5.1.1 社區反饋 72
5.1.2 社區協作 76
5.1.3 社區運營 77
5.2 規范先行 79
5.2.1 編輯器 79
5.2.2 格式化 82
5.2.3 代碼Lint 88
5.2.4 提交信息 96
5.3 持續集成 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 本章小結 123
第6章設計更好的JavaScript庫 124
6.1 設計更好的函數 124
6.1.1 函數命名 124
6.1.2 參數個數 125
6.1.3 可選參數 126
6.1.4 返回值 126
6.2 提高健壯性 127
6.2.1 參數防禦 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 本章小結 137
第7章安全防護 138
7.1 防護意外 138
7.1.1 最小功能設計 138
7.1.2 最小參數設計 140
7.1.3 凍結對象 141
7.2 避免原型入侵 142
7.2.1 面向對象基礎知識 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 正確區分依賴 154
7.4.3 版本問題 156
7.4.4 依賴過期 157
7.4.5 安全檢查 158
7.5 本章小結 160
第8章抽象標準庫 161
8.1 類型判斷 161
8.1.1 背景知識 161
8.1.2 抽像庫 166
8.2 函數工具 169
8.2.1 once 170
8.2.2 curry 170
8.2.3 pipe 171
8.2.4 compose 172
8.3 數據拷貝 174
8.3.1 背景知識 174
8.3.2 最簡單的深拷貝 176
8.3.3 一行代碼的深拷貝 178
8.3.4 破解遞歸爆棧 178
8.3.5 破解循環引用 180
8.3.6 性能對比 183
8.4 相等性判斷 187
8.4.1 背景知識 187
8.4.2 抽像庫 195
8.5 參數擴展 200
8.5.1 背景知識 200
8.5.2 抽像庫 202
8.6 深層數據 205
8.6.1 背景知識 205
8.6.2 抽像庫 209
8.7 本章小結 214

第9章命令行工具 215
9.1 系統設計 215
9.2 標準命令行工具 217
9.3 交互界面 225
9.4 初始化功能 234
9.4.1 代碼架構 236
9.4.2 公共邏輯 237
9.4.3 模塊設計 242
9.5 命令行顏色 249
9.6 進度條 251
9.7 發布 256
9.8 本章小結 257
第10章工具庫實戰 258
10.1 問題背景 258
10.2 代碼實現 260
10.2.1 字符串操作 260
10.2.2 數組操作 262
10.2.3 對像操作 265
10.2.4 URL參數處理 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 發布 285
10.5 數據統計 285
10.5.1 統計接入項目 285
10.5.2 下載量 286
10.5.3 包和函數被引用的次數 287
10.6 本章小結 292
第11章前端模板庫實戰 293
11.1 系統搭建 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 發布 329
11.8 本章小結 330
第12章未來之路 331
12.1 全景圖 331
12.1.1 知識全景圖 331
12.1.2 技術全景圖 332
12.2 下一代技術 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 本章小結 336