現(xiàn)代JavaScript庫(kù)開發(fā):原理、技術(shù)與實(shí)戰(zhàn)
定 價(jià):108 元
- 作者:顏海鏡
- 出版時(shí)間:2022/11/1
- ISBN:9787121445125
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312.8
- 頁(yè)碼:364
- 紙張:
- 版次:01
- 開本:16開
開發(fā)JavaScript庫(kù)是入門前端領(lǐng)域的重要一步。本書旨在幫助前端開發(fā)者掌握現(xiàn)代JavaScript庫(kù)的開發(fā)技術(shù),讓每個(gè)人都可以開源自己的現(xiàn)代JavaScript庫(kù)。本書系統(tǒng)介紹了現(xiàn)代JavaScript庫(kù)開發(fā)涉及的技術(shù)、原理和最佳實(shí)踐,以及將庫(kù)開源后如何做好維護(hù)工作。在最佳實(shí)戰(zhàn)部分,本書選取了9個(gè)典型庫(kù)作為案例,展示開發(fā)流程,代碼清晰、完善。 本書既適合對(duì)現(xiàn)代JavaScript庫(kù)開發(fā)及開源感興趣的前端開發(fā)者閱讀,也適合想要學(xué)習(xí)前端項(xiàng)目開發(fā)技術(shù)的初學(xué)者閱讀。
顏海鏡,知名技術(shù)博主,微信公眾號(hào)“顏海鏡”作者。擁有十年以上開源經(jīng)驗(yàn),在GitHub上擁有關(guān)注者(followers)5100余名,維護(hù)了jsmini、jslib-base、template.js、zepto.fullpage等多個(gè)開源項(xiàng)目,獲得了6500個(gè)以上的GitHub Star。具有多年一線大廠從業(yè)經(jīng)驗(yàn),曾先后就職于金山、百度、美團(tuán)等知名企業(yè),負(fù)責(zé)前端開發(fā)工作。著有《React狀態(tài)管理與同構(gòu)實(shí)戰(zhàn)》。侯策,就職于某內(nèi)容社區(qū)類互聯(lián)網(wǎng)上市公司,具有多年海內(nèi)外工作經(jīng)驗(yàn),曾先后就職于法國(guó)ENGIE集團(tuán)、Google、百度等知名企業(yè)。擅長(zhǎng)前端工程化體系搭建及基礎(chǔ)建設(shè)架構(gòu)設(shè)計(jì)。著有《React狀態(tài)管理與同構(gòu)實(shí)踐》《前端開發(fā)核心知識(shí)進(jìn)階:從夯實(shí)基礎(chǔ)到突破瓶頸》《前端架構(gòu)師:基礎(chǔ)建設(shè)與架構(gòu)設(shè)計(jì)思想》等多部技術(shù)圖書。
目錄
第1章 從零開發(fā)一個(gè)JavaScript庫(kù) 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章 測(cè)試 36
3.1 第一個(gè)單元測(cè)試 36
3.2 設(shè)計(jì)測(cè)試用例 39
3.2.1 設(shè)計(jì)思路 39
3.2.2 編寫代碼 40
3.3 驗(yàn)證測(cè)試覆蓋率 42
3.3.1 代碼覆蓋率 42
3.3.2 源代碼覆蓋率 44
3.3.3 校驗(yàn)覆蓋率 46
3.4 瀏覽器環(huán)境測(cè)試 48
3.4.1 模擬瀏覽器環(huán)境 48
3.4.2 真實(shí)瀏覽器測(cè)試 49
3.4.3 自動(dòng)化測(cè)試 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)計(jì)數(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章 維護(hù) 71
5.1 社區(qū)協(xié)作 71
5.1.1 社區(qū)反饋 72
5.1.2 社區(qū)協(xié)作 76
5.1.3 社區(qū)運(yùn)營(yíng) 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 標(biāo)簽與歷史 121
5.5 本章小結(jié) 123
第6章 設(shè)計(jì)更好的JavaScript庫(kù) 124
6.1 設(shè)計(jì)更好的函數(shù) 124
6.1.1 函數(shù)命名 124
6.1.2 參數(shù)個(gè)數(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 解決瀏覽器兼容性問(wèn)題 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章 安全防護(hù) 138
7.1 防護(hù)意外 138
7.1.1 最小功能設(shè)計(jì) 138
7.1.2 最小參數(shù)設(shè)計(jì) 140
7.1.3 凍結(jié)對(duì)象 141
7.2 避免原型入侵 142
7.2.1 面向?qū)ο蠡A(chǔ)知識(shí) 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補(bǔ)充 152
7.4 依賴的安全性問(wèn)題 152
7.4.1 庫(kù)的選擇 153
7.4.2 正確區(qū)分依賴 154
7.4.3 版本問(wèn)題 156
7.4.4 依賴過(guò)期 157
7.4.5 安全檢查 158
7.5 本章小結(jié) 160
第8章 抽象標(biāo)準(zhǔn)庫(kù) 161
8.1 類型判斷 161
8.1.1 背景知識(shí) 161
8.1.2 抽象庫(kù) 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 背景知識(shí) 174
8.3.2 最簡(jiǎn)單的深拷貝 176
8.3.3 一行代碼的深拷貝 178
8.3.4 破解遞歸爆棧 178
8.3.5 破解循環(huán)引用 180
8.3.6 性能對(duì)比 183
8.4 相等性判斷 187
8.4.1 背景知識(shí) 187
8.4.2 抽象庫(kù) 195
8.5 參數(shù)擴(kuò)展 200
8.5.1 背景知識(shí) 200
8.5.2 抽象庫(kù) 202
8.6 深層數(shù)據(jù) 205
8.6.1 背景知識(shí) 205
8.6.2 抽象庫(kù) 209
8.7 本章小結(jié) 214
第9章 命令行工具 215
9.1 系統(tǒng)設(shè)計(jì) 215
9.2 標(biāo)準(zhǔn)命令行工具 217
9.3 交互界面 225
9.4 初始化功能 234
9.4.1 代碼架構(gòu) 236
9.4.2 公共邏輯 237
9.4.3 模塊設(shè)計(jì) 242
9.5 命令行顏色 249
9.6 進(jìn)度條 251
9.7 發(fā)布 256
9.8 本章小結(jié) 257
第10章 工具庫(kù)實(shí)戰(zhàn) 258
10.1 問(wèn)題背景 258
10.2 代碼實(shí)現(xiàn) 260
10.2.1 字符串操作 260
10.2.2 數(shù)組操作 262
10.2.3 對(duì)象操作 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)計(jì) 285
10.5.1 統(tǒng)計(jì)接入項(xiàng)目 285
10.5.2 下載量 286
10.5.3 包和函數(shù)被引用的次數(shù) 287
10.6 本章小結(jié) 292
第11章 前端模板庫(kù)實(shí)戰(zhàn) 293
11.1 系統(tǒng)搭建 293
11.1.1 背景知識(shí) 293
11.1.2 搭建項(xiàng)目 295
11.2 解析器 300
11.3 即時(shí)編譯器 305
11.4 預(yù)編譯器 309
11.5 webpack插件 317
11.6 VS Code插件 323
11.7 發(fā)布 329
11.8 本章小結(jié) 330
第12章 未來(lái)之路 331
12.1 全景圖 331
12.1.1 知識(shí)全景圖 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