內容簡介
《Electron實戰:入門、進階與性能最佳化》以實戰為導向,講解了如何用Electron結合現代前端技術來開發桌面套用。不僅全面介紹了Electron入門需要掌握的功能和原理,而且還針對Electron開發中的重點和難點進行了重點講解,旨在幫助讀者實現快速進階。作者是Electron領域的早期實踐者,項目經驗非常豐富,《Electron實戰:入門、進階與性能最佳化》內容得到了來自阿里等大企業的一線專家的高度評價。
《Electron實戰:入門、進階與性能最佳化》遵循漸進式的原則逐步傳遞知識給讀者,書中以Electron知識為主線並對現代前端知識進行了有序的整合,對易發問題從深層原理的角度進行講解,對普適需求以實踐的方式進行講解,同時還介紹了Electron生態內的大量優秀組件和項目。
全書一共14章:
第1章講解Electron因何而來,Electron的生態、優勢和不足,以及Electron未來的競爭者
PWA技術:
第2章帶領讀者新建了一個簡單的Electron項目,同時為讀者介紹了一些Electron的基礎知識;
第3章講解了主進程和渲染進程的相關內容;
第5-13章依次詳細講解了界面、
數據持久化、作業系統API訪問、硬體設備訪問、測試、調試、安全、發布等技術及其背後的原理:
第1 4章通過一個完整的工程項目串聯了Electron的核心技術並展示了Electron項目開發的完整流程。
圖書目錄
●第1章 認識Electron 1
1.1 Electron的由來 1
1.2 基於Electron的套用 4
1.3 Electron的生態 5
1.4 Electron的優勢 5
1.5 Electron的不足 6
1.6 未來的競爭者PWA 7
1.7 本章小結 9
●第2章 輕鬆入門 10
2.1 搭建開發環境 10
2.2 創建視窗界面 13
2.3 啟動視窗 14
2.4 引用JavaScript 16
2.5 Electron API演示工具 19
2.6 試驗工具Electron Fiddle 20
2.7 本章小結 22
●第3章 主進程和渲染進程 23
3.1 區分主進程與渲染進程 23
3.2 進程調試 25
3.2.1 調試主進程 25
3.2.2 調試渲染進程 27
3.3 進程互訪 29
3.3.1 渲染進程訪問主進程對象 29
3.3.2 渲染進程訪問主進程類型 30
3.3.3 渲染進程訪問主進程自定義內容 31
3.3.4 主進程訪問渲染進程對象 32
3.4 進程間訊息傳遞 32
3.4.1 渲染進程向主進程傳送訊息 32
3.4.2 主進程向渲染進程傳送訊息 34
3.4.3 渲染進程之間訊息傳遞 36
3.5 remote模組的局限性 36
3.6 本章小結 38
●第4章 引入現代前端框架 39
4.1 引入webpack 39
4.1.1 認識webpack 39
4.1.2 配置webpack 40
4.1.3 主進程入口程式 42
4.1.4 渲染進程入口程式 43
4.1.5 自定義入口頁面 45
4.1.6 使用jQuery 46
4.2 引入Angular 46
4.2.1 認識Angular 46
4.2.2 環境搭建 47
4.2.3 項目結構 48
4.3 引入React 48
4.3.1 認識React 48
4.3.2 環境搭建 49
4.3.3 項目結構 50
4.3.4 項目引薦 50
4.4 引入Vue 50
4.4.1 認識Vue 50
4.4.2 環境搭建 51
4.4.3 項目結構 52
4.4.4 調試配置 53
4.5 本章小結 55
●第5章 視窗 56
5.1 視窗的常用屬性及套用場景 56
5.2 視窗標題欄和框線 58
5.2.1 自定義視窗的標題欄 58
5.2.2 視窗的控制按鈕 62
5.2.3 視窗最大化狀態控制 63
5.2.4 防抖與限流 65
5.2.5 記錄與恢復視窗狀態 67
5.2.6 適時地顯示視窗 68
5.3 不規則視窗 69
5.3.1 創建不規則視窗 69
5.3.2 點擊穿透透明區域 71
5.4 視窗控制 72
5.4.1 阻止視窗關閉 72
5.4.2 多視窗競爭資源 74
5.4.3 模態視窗與父子視窗 75
5.4.4 Mac系統下的關注點 76
5.5 本章小結 78
●第6章 界面 79
6.1 頁面內容 79
6.1.1 獲取webContents實例 79
6.1.2 頁面載入事件及觸發順序 81
6.1.3 頁面跳轉事件 82
6.1.4 單頁套用中的頁內跳轉 83
6.1.5 頁面縮放 84
6.1.6 渲染數據元素 85
6.2 頁面容器 88
6.2.1 webFrame 88
6.2.2 webview 90
6.2.3 BrowserView 91
6.3 腳本注入 93
6.3.1 通過preload參數注入腳本 93
6.3.2 通過executeJavaScript注入腳本 97
6.3.3 禁用視窗的beforeunload事件 99
6.4 頁面動效 100
6.4.1 使用CSS控制動畫 100
6.4.2 使用JavaScript控制動畫 101
6.5 本章小結 102
●第7章 數據 103
7.1 使用本地檔案持久化數據 103
7.1.1 用戶數據目錄 103
7.1.2 讀寫本地檔案 105
7.1.3 值得推薦的第三方庫 106
7.2 使用瀏覽器技術持久化數據 107
7.2.1 瀏覽器數據存儲技術對比 107
7.2.2 使用第三方庫訪問IndexedDB 108
7.2.3 讀寫受限訪問的Cookie 110
7.2.4 清空瀏覽器快取 112
7.3 使用SQLite持久化數據 112
7.4 本章小結 115
●第8章 系統 116
8.1 系統對話框 116
8.1.1 使用系統檔案對話框 116
8.1.2 關於對話框 118
8.2 選單 119
8.2.1 視窗選單 119
8.2.2 HTML右鍵選單 121
8.2.3 系統右鍵選單 124
8.2.4 自定義系統右鍵選單 125
8.3 快捷鍵 126
8.3.1 監聽網頁按鍵事件 126
8.3.2 監聽全局按鍵事件 126
8.4 托盤圖示 127
8.4.1 托盤圖示閃爍 127
8.4.2 托盤圖示選單 128
8.5 剪下板 129
8.5.1 把圖片寫入剪下板 129
8.5.2 讀取並顯示剪下板里的圖片 130
8.6 系統通知 131
8.6.1 使用HTML API傳送系統通知 131
8.6.2 主進程內傳送系統通知 132
8.7 其他 133
8.7.1 使用系統默認套用打開檔案 133
8.7.2 接收拖拽到視窗中的檔案 134
8.7.3 使用系統字型 135
8.7.4 最近打開的檔案 137
8.8 本章小結 138
●第9章 通信 139
9.1.1 禁用同源策略以實現跨域 139
9.1.2 Node.js訪問HTTP服務的不足 141
9.1.3 使用WebSocket通信 142
9.1.4 截獲並修改網路請求 144
9.2 與系統內其他套用通信 146
9.2.1 Electron套用與其他套用通信 146
9.2.2 網頁與Electron套用通信 148
9.3 自定義協定(protocol) 150
9.5 本章小結 153
●第10章 硬體 154
10.1 螢幕 154
10.1.1 獲取擴展螢幕 154
10.1.2 在自助服務機中使用Electron 156
10.2 音視頻設備 158
10.2.1 使用攝像頭和麥克風 158
10.2.2 錄屏 159
10.3 電源 160
10.3.1 電源的基本狀態和事件 160
10.3.2 監控系統掛起與鎖屏事件 161
10.3.3 阻止系統鎖屏 162
10.4 印表機 162
10.4.1 控制列印行為 162
10.4.2 導出PDF 164
10.5 硬體信息 165
10.5.1 獲取目標平台硬體信息 165
10.5.2 使用硬體串號控制套用分發 166
10.6 本章小結 170
●第11章 調測 171
11.1 測試 171
11.2 調試 177
11.3 日誌 188
11.4 本章小結 193
●第12章 安全 194
12.1 保護源碼 195
12.2 保護客戶 204
12.3 保護網路 206
12.4 保護數據 211
12.5 提升穩定性 214
12.6 本章小結 216
●第13章 發布 218
13.1 生成圖示 218
13.2 生成安裝包 219
13.3 代碼簽名 221
13.4 自動升級 222
13.5 本章小結 224
●第14章 實戰:自媒體內容發布工具 225
14.1 項目需求 225
14.2 項目架構 226
14.3 核心剖析 229
14.4 輔助功能 237
14.5 本章小結 240
附錄A Mac代碼簽名 242
作者簡介
劉曉倫
資深技術專家,有十餘年研發經驗,是Electron及其相關技術在企業套用領域的早期實踐者,GitHub/Gitee優秀開源項目作者。作者還為Electron項目提交過數個Issue和Pull Request,均被官方接納。
曾任原遠傳研發中心負責人、小遠機器人研發總監。現擔任一家創業公司的技術負責人,負責的產品以Electron為主要技術方向。
除此之外,作者還有著十餘年的前端及C++(Qt)的開發經驗,深入研究過Chromium的源碼及相關的協定(DevTools Protocol和V8 Debugger Protocol),其主導研發的產品為數家
世界五百強企業提供服務。