前端跨界開發指南:JavaScript工具庫原理解析與實戰

前端跨界開發指南:JavaScript工具庫原理解析與實戰

作者: 史文強
出版社: 機械工業
出版在: 2022-07-12
ISBN-13: 9787111708049
ISBN-10: 7111708040
裝訂格式: 平裝
總頁數: 412 頁





內容描述


本書是字節跳動資深前端工程師嘔心瀝血之作,
也是目前市場上少有的從原理到實戰深度剖析JavaScript生態中經典工具庫的技術圖書。
全書共有6篇,分別是基礎篇、圖形學篇、多媒體篇、跨端開發篇、遊戲開發篇和跨界實踐篇,
書中不僅詳細介紹了JavaScript語言在瀏覽器頁面之外的不同應用場景,更從實用技巧、設計理念、
原理源碼等角度對精心挑選的30多個工具庫進行了全方位的解析,
希望讀者在領略JavaScript代碼之美的同時,也能拓寬技術視野。
為了幫助讀者更好地理解書中所講述的內容,
隨書代碼倉庫裡提供了大量可運行的源碼,包括精簡版的庫重寫和完整的代碼示例。


目錄大綱


前言
基礎篇
第1章 Mock.js:如何與後端瀟灑分手2
1.1 為什麼你總是下不了班3
1.2 聯調加速4
1.3 使用Mock.js4
1.3.1 Mock.js的語法規範5
1.3.2 Mock.js實戰6
1.3.3 自定義擴展8
1.4 Mock.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.1 Node.js是什麼16
2.1.2 Node.js能做什麼17
2.1.3 招黑的JavaScript全棧工程師19
2.2 業界用Node.js做什麼19
2.2.1 前端工程化20
2.2.2 中間層20
2.2.3 SSR引擎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.2 ESLint插件開發實戰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.1 script標籤40
4.1.2 代碼隔離41
4.1.3 依賴管理42
4.2  模塊規範大雜燴43
4.2.1 概述43
4.2.2 幾個重要的差異44
4.3 模塊化規範的兼容與工具演進48
4.4 Require.js的使用方法50
4.5 Require.js的核心原理52
第5章 Lodash.js是工具,更是秘籍55
5.1 Lodash.js是什麼55
5.1.1 概述56
5.1.2 代碼的較量56
5.2 重點API的剖析59
5.3 Lodash.js的源碼結構62
5.3.1 基本結構62
5.3.2 Lodash.js源碼的學習方法63
第6章 靜態類型檢查:Flow.js和TypeScript64
6.1 靜態類型檢查65
6.1.1 靜態類型檢查的優勢65
6.1.2 靜態類型檢查的劣勢66
6.2 Flow.js,易上手的靜態類型檢查工具67
6.2.1 Flow.js中的類型標註67
6.2.2 Flow.js的優勢68
6.3 TypeScript,另一種選擇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.3 Rxjs:一切皆是流的世界91
8.3.1 Rxjs的核心概念92
8.3.2 Rxjs應用實例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.2 Immer.js的核心原理106
9.3 Immutable.js與共享結構112
9.3.1 Immutable.js簡介113
9.3.2 Immutable.js的核心原理113
9.3.3 Immutable.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 能玩一生的標籤139
12.1.1 基本語法介紹139
12.1.2 動畫模式141
12.2 用easel.js操作Canvas142
12.3 工具庫的封裝技巧144
第13章 Echarts.js: 看見147
13.1 數據可視化生態148
13.2 開始使用Echarts.js148
13.2.1 Echarts的正確打開方式149
13.2.2 重點API151
13.2.3 配置項152
13.3 數據可視化三步曲153
13.3.1 數據準備153
13.3.2 圖表選型153
13.3.3 細節打磨155
13.4 下一步的選擇158
第14章 SVG變形記159
14.1 矢量圖的世界159
14.1.1 SVG圖形159
14.1.2 SVG的高級功能160
14.2 SVG變形165
14.2.1 SVG動畫與CSS3動畫165
14.2.2 經典SVG動畫166
14.3 Snap.svg快速入門168
14.3.1 Snap方法集168
14.3.2 Snap.svg實戰169
14.4 取捨171
第15章 Three.js:構建立體的用戶界面172
15.1 三維世界的腳手架Three.js173
15.1.1 核心概念173
15.1.2 分解網格模型175
15.1.3 Three.js的基本使用方法177
15.2 實戰:用Three.js製作漫威電影片頭動畫179
15.2.1 特效一:平面漸離180
15.2.2 特效二:字體浮雕模型181
15.2.3 特效三:視頻紋理貼圖183
15.2.4 特效四:鏡頭轉換185
15.3 Three.js如何參與渲染186
15.3.1 相機模式和降維打擊186
15.3.2 著色器190
15.3.3 WebGL的渲染流程192
15.4 用Cinema4D玩轉跨界193
多媒體篇
第16章Impress.js:網頁裡的PPT200
16.1 Impress.js的應用及原理200
16.1.1 快速上手Impress.js200
16.1.2 Impress.js的實現原理202
16.2 詳解CSS變形和動畫203
16.2.1 幀和關鍵幀204
16.2.2 CSS補間動畫206
16.3 軟技能:PPT設計208
16.3.1 內容為王208
16.3.2 設計入門課209
第17章Velocity.js與高性能動畫之謎211
17.1 CSS動畫和JavaScript動畫211
17.1.1 CSS動畫212
17.1.2 JavaScript動畫214
17.2 Velocity.js入門指南216
17.2.1 stagger交錯動畫217
17.2.2 在SPA框架中編寫動畫219
17.3 高性能動畫的秘密223
17.3.1 像素渲染管線224
17.3.2 回流、重繪與合成226
17.3.3 使用合成層獲得高性能227
17.3.4 隱式提升陷阱229
17.4 小結231
第18章扭曲時間:tween.js和jQuery Easing Plugin232
18.1 緩動函數233
18.2 貝賽爾曲線234
18.2.1 繪製原理234
18.2.2 貝賽爾曲線的特性236
18.3 使用Tween.js和jQuery Easing Plugin237
18.4 選擇恰當的緩動函數239
第19章用Recorder.js實現語音信號處理241
19.1 百度語音識別實戰241
19.1.1 工業系統測量的預備知識242
19.1.2 改造Recorder.js243
19.2 Web Audio API的工作模式246
19.2.1 中間件式的音頻處理圖246
19.2.2 Recorder.js核心原理:Script-ProcessorNode247
19.2.3 淺談ArrayBuffer250
第20章jsmpeg.js流媒體播放器253
20.1 視頻編解碼技術入門254
20.1.1 基礎知識254
20.1.2 初識傳輸流255
20.2 現代瀏覽器中的播放技術258
20.2.1 Media Source Extension259
20.2.2 其他格式的媒體資源261
20.3 切片技術與TS文件解析262
20.3.1 文件切片技術262
20.3.2 解析TS切片263
20.4 jsmpeg.js源碼結構和低延遲播放實例266
跨端開發篇
第21章“懶”是第一生產力:製作命令行工具272
21.1 Commander.js與Git風格的命令行工具273
21.2 Inquirer.js與交互式命令行工具275
21.3 從工具化到工程化277
第22章用Shelljs實現自動化部署279
22.1 Linux入門小課279
22.2 實用的跨平台工具281
22.3 實戰:使用Shelljs和node-ssh完成自動化部署283
22.4 下一站:性能監控288
第23章跨端技術的秘密289
23.1 Cordova的前世今生290
23.2 React Native291
23.3 小程序292
23.4 原生App與網頁的通信294
23.5 小結296
第24章protobuf與二進制消息298
24.1 前端常見的消息格式298
24.2 二進制消息格式:protobuf302
24.3 使用protobuf.js307
24.4 初探gRPC310
第25章控制反轉與Inversify.js314
25.1 依賴為什麼需要注入315
25.2 IOC容器的實現317
25.3 AOP和裝飾器322
25.4 用Inversify.js實現依賴注入325
25.5 小結330
遊戲開發篇
第26章基於CreateJS解構遊戲開發332
26.1 工具包CreateJS333
26.2 實戰開發:《飛龍大戰》334
26.3 性能提陞技巧341
第27章經典物理與matter.js345
27.1 經典力學回顧346
27.2 仿真的實現原理347
27.2.1 基本動力學模擬347
27.2.2 碰撞模擬349
27.3 物理引擎matter.js350
27.3.1 《憤怒的小鳥》的物理特性分析350
27.3.2 使用matter.js構建物理模型351
27.3.3 物理引擎如何牽手游戲引擎354
第28章Phaser:從工具到生態357
28.1 快速上手Phaser遊戲開發357
28.2 淺談框架的選擇364
跨界實踐篇
第29章brain.js:寫給前端的神經網絡入門課366
29.1 從關鍵詞開始366
29.2 認識神經網絡369
29.2.1 基本結構369
29.2.2 神經元的數學模型372
29.2.3 激活函數與非線性決策邊界374
29.2.4 神經網絡中的信息傳遞377
29.3 使用brain.js構建神經網絡379
29.4 小結382
第30章TensorFlow.js:開箱即用的深度學習工具383
30.1 上手TensorFlow.js383
30.2 使用TensorFlow.js構建卷積神經網絡387
30.2.1 卷積神經網絡387
30.2.2 搭建LeNet-5模型390
30.3 基於遷移學習的語音指令識別392
第31章用JavaScript玩轉物聯網394
31.1 入門級物聯網“玩具”Arduino394
31.1.1 Arduino UNO R3闆卡結構395
31.1.2 模擬量和數字量396
31.1.3 Arduino原生編程入門397
31.1.4 Arduino實驗示例一:按鈕控制三色LED燈398
31.1.5 Arduino實驗示例二:使用DHT11模塊採集溫濕度信息402
31.2 PC與MCU之間的串口通信403
31.3 使用Johnny-Five進行嵌入式開發407
31.3.1 初識Johnny-Five407
31.3.2 Firmata.js源碼導讀408
31.3.3 舵機風扇實驗410
31.4 小結412




相關書籍

Flutter 入門經典 (Beginning Flutter : A Hands On Guide To App Development)

作者 Marco L. Napoli 蒲成 譯

2022-07-12

JavaScript 設計模式 (JavaScript Patterns)

作者 Stoyan Stefanov 洪象成 譯

2022-07-12

微服務與容器

作者 [美] 帕敏德·辛格·科克(Parminder Singh Kocher)

2022-07-12