《深入淺出Electron:原理、工程與實踐》封麵

內容簡介

這是一本能幫助讀者夯實Electron基礎進而開發出穩定、健壯的Electron應用的著作。

書中對Electron的工作原理、大型工程構建、常見技術方案、周邊生態工具等進行了細致、深入地講解。

工作原理維度:

對Electron及其周邊工具的原理進行了深入講解,包括Electron依賴包的原理、Electron原理、electron-builder的原理等。

工程構建維度:

講解了如何駕馭和構建一個大型Electron工程,包括使用各種現代前端構建工具構建Electron工程、自動化測試、編譯和調試Electron源碼等。

技術方案維度:

總結了實踐過程中遇到的一些技術難題以及應對這些難題的技術方案,包括跨進程消息總線、窗口池、大數據渲染、點對點通信等。

周邊工具維度:

作者根據自己的“踩坑”經驗和教訓,有針對性地講解了大量Electron的周邊工具、庫和技術,涉及Qt開發框架、C++語言、Node.js框架甚至Vite構建工具等,幫助讀者拓寬技術廣度,掌握開發Electron應用需要的全棧技術。

作者簡介

劉曉倫 著:劉曉倫

資深技術專家,有10餘年研發經驗,是Electron及其相關技術在企業應用領域的早期實踐者,作者還為Electron項目提交過數個Issue和Pull Request均被官方接納。

原遠傳研發中心負責人、小遠機器人研發總監。現在擔任一家創業公司的技術負責人,負責的產品以Electron為主要技術方向。

除此之外,作者還有著十餘年的前端及C++(Qt)的開發經驗,深入研究過Chromium的源碼及相關的協議(DevTools Protocol和V8 Debugger Protocol),其主導研發的產品為數家世界五百強企業提供服務。

目錄

前言
第一部分 原理
第1章 Electron包原理解析3
1.1 安裝失敗3
1.2 npm鉤子4
1.3 鏡像策略6
1.4 緩存策略9
1.5 注入命令11
1.6 共享環境變量13
1.7 合適的版本15
第2章 Electron原理解析17
2.1 Chromium原理17
2.2 Node.js原理20
2.3 源碼結構23
2.4 主進程Node.js環境25
2.5 公開API27
2.6 不同進程不同的API31
2.7 加載應用入口腳本32
2.8 提供係統底層支持34
2.9 解析asar文件37
2.10 渲染進程Node.js環境41
2.11 支持不同的操作係統42
2.12 進程間通信45
2.13 頁麵事件48
第3章 electron-builder原理解析52
3.1 使用方法52
3.2 原理介紹53
3.3 偽交叉編譯57
3.4 輔助工具app-builder59
3.5 為生產環境安裝依賴61
3.6 生成asar62
3.7 修改可執行程序63
3.8 NSIS介紹66
3.9 生成安裝包68
第4章 electron-updater原理解析71
4.1 使用方法71
4.2 如何校驗新版本的安裝包73
4.3 Windows應用升級原理75
4.4 Mac應用升級原理78
第5章 其他重要原理80
5.1 緩存策略與控製80
5.2 V8腳本執行原理83
5.3 V8垃圾收集原理87
第二部分 工程
第6章 使用Vite構建Electron項目91
6.1 Vite為什麼如此之快91
6.2 大型Electron工程結構92
6.3 定義啟動腳本93
6.4 啟動開發服務95
6.5 設置環境變量96
6.6 構建主進程代碼98
6.7 啟動Electron子進程100
6.8 配置調試環境102
6.9 打包源碼104
6.10 打包依賴106
6.11 製成安裝程序108
6.12 引入TypeScript支持111
第7章 使用webpack構建Electron項目113
7.1 需求起源113
7.2 準備環境114
7.3 編譯主進程代碼116
7.4 啟動多入口頁麵調試服務117
7.5 啟動Electron子進程120
7.6 製成安裝包121
7.7 注冊應用內協議123
第8章 使用Rollup構建Electron項目125
8.1 Rollup與Svelte125
8.2 準備開發環境127
8.3 製成安裝包130
第9章 自動化測試134
9.1 集成Spectron及Spectron原理134
9.2 在Jest測試框架中使用Spectron137
第10章 編譯與調試Electron源碼141
10.1 build-tools構建工具介紹141
10.2 手工構建Electron源碼142
10.3 構建不同版本的Electron150
10.4 調試Electron源碼151
10.5 調試崩潰報告156
第11章 應用分發162
11.1 源碼混淆162
11.2 應用簽名165
11.3 靜默安裝與開機自啟168
11.4 自定義安裝畫麵170
11.5 軟件防殺173
第12章 逆向分析174
12.1 用戶安裝目錄174
12.2 用戶數據目錄175
12.3 注冊表鍵值177
12.4 自研逆向調試工具178
第13章 其他工程要點183
13.1 使用D8調試工具183
13.2 內存消耗監控185
13.3 子應用管控189
第三部分 實踐
第14章 跨進程消息總線195
14.1 前端事件機製195
14.2 Node.js的事件機製197
14.3 Electron進程間通信198
14.4 跨進程事件200
14.5 使用Promise封裝事件203
14.6 基於HTMLAPI的跨進程事件205
14.7 跨進程通信帶來的問題207
第15章 窗口池209
15.1 窗口渲染過慢209
15.2 構建窗口池210
15.3 構建窗口實例212
15.4 通用的窗口標題欄214
15.5 消費窗口池中的窗口215
15.6 模擬模態窗口216
第16章 原生模塊219
16.1 需求起源219
16.2 原生模塊開發方式221
16.3 傳統原生模塊開發223
16.4 使用Node-API開發原生模塊225
16.5 Node-API進階229
16.6 Electron環境下的原生模塊233
第17章 應用控製236
17.1 應用單開236
17.2 注冊喚起協議237
17.3 喚起外部應用238
17.4 常規截圖方案介紹239
17.5 使用第三方截圖庫241
第18章 Electron與Qt的整合245
18.1 需求起源245
18.2 命名管道服務端247
18.3 命名管道客戶端250
18.4 通信協議253
18.5 入口應用配置256
18.6 應用退出的事件順序258
18.7 關閉窗口的問題260
第19章 大數據渲染262
19.1 常規無限滾動方案介紹262
19.2 DOM結構與樣式265
19.3 模擬滾動條267
19.4 處理滾動事件268
19.5 滾動條的顯隱動效270
19.6 內置的數據持久化能力271
第20章 點對點通信274
20.1 WebRTC原理274
20.2 構建WebRTC服務器275
20.3 發送超大文件276
20.4 接收超大文件280
第21章 加密信息提取283
21.1 需求起源283
21.2 分析調試源碼284
21.3 暴露解密方法286
21.4 轉發請求287
21.5 注入腳本288
21.6 監控cookie289
第22章 其他實踐指導292
22.1 分析首屏加載時間292
22.2 模擬弱網環境294
22.3 數據存儲方案性能對比296
22.4 加載本地圖片302
22.5 桌麵端編程的生態演化302
22.6 Electron的競爭對手304
······

最後修改:2024 年 12 月 28 日