Electron實戰(zhàn):入門、進階與性能優(yōu)化
定 價:79 元
- 作者:劉曉倫
- 出版時間:2020/5/1
- ISBN:9787111653745
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TN702
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
內容簡介
本書以實戰(zhàn)為導向,講解了如何用Electron結合現代前端技術來開發(fā)桌面應用。不僅全面介紹了Electron入門需要掌握的功能和原理,而且還針對Electron開發(fā)中的重點和難點進行了重點講解,旨在幫助讀者實現快速進階。作者是Electron領域的早期實踐者,項目經驗非常豐富,本書內容得到了來自阿里等大企業(yè)的一線專家的高度評價。
本書遵循漸進式的原則逐步傳遞知識給讀者,書中以Electron知識為主線并對現代前端知識進行了有序的整合,對易發(fā)問題從深層原理的角度進行講解,對普適需求以*佳實踐的方式進行講解,同時還介紹了Electron生態(tài)內的大量組件和項目。
全書一共14章:
第1章講解Electron因何而來,Electron的生態(tài)、優(yōu)勢和不足,以及Electron未來的競爭者PWA技術;
第2章帶領讀者新建了一個簡單的Electron項目,同時為讀者介紹了一些Electron的基礎知識;
第3章講解了主進程和渲染進程的相關內容;
第4章介紹了如何把現代前端框架引入Electron項目中,集中介紹了webpack、Angular、React和Vue等框架;
第5~3章依次詳細講解了界面、數據持久化、操作系統(tǒng)API訪問、硬件設備訪問、測試、調試、安全、發(fā)布等技術及其背后的原理
第14章通過一個完整的工程項目串聯(lián)了Electron的核心技術并展示了Electron項目開發(fā)的完整流程。
推薦序
前 言
第1章 認識Electron 1
1.1 Electron的由來 1
1.2 基于Electron的應用 4
1.3 Electron的生態(tài) 5
1.4 Electron的優(yōu)勢 5
1.5 Electron的不足 6
1.6 未來的競爭者PWA 7
1.7 本章小結 9
第2章 輕松入門 10
2.1 搭建開發(fā)環(huán)境 10
2.2 創(chuàng)建窗口界面 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 區(qū)分主進程與渲染進程 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 渲染進程向主進程發(fā)送消息 32
3.4.2 主進程向渲染進程發(fā)送消息 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 環(huán)境搭建 47
4.2.3 項目結構 48
4.3 引入React 48
4.3.1 認識React 48
4.3.2 環(huán)境搭建 49
4.3.3 項目結構 50
4.3.4 項目引薦 50
4.4 引入Vue 50
4.4.1 認識Vue 50
4.4.2 環(huán)境搭建 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 窗口最大化狀態(tài)控制 63
5.2.4 防抖與限流 65
5.2.5 記錄與恢復窗口狀態(tài) 67
5.2.6 適時地顯示窗口 68
5.3 不規(guī)則窗口 69
5.3.1 創(chuàng)建不規(guī)則窗口 69
5.3.2 點擊穿透透明區(qū)域 71
5.4 窗口控制 72
5.4.1 阻止窗口關閉 72
5.4.2 多窗口競爭資源 74
5.4.3 模態(tài)窗口與父子窗口 75
5.4.4 Mac系統(tǒng)下的關注點 76
5.5 本章小結 78
第6章 界面 79
6.1 頁面內容 79
6.1.1 獲取webContents實例 79
6.1.2 頁面加載事件及觸發(fā)順序 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章 系統(tǒng) 116
8.1 系統(tǒng)對話框 116
8.1.1 使用系統(tǒng)文件對話框 116
8.1.2 關于對話框 118
8.2 菜單 119
8.2.1 窗口菜單 119
8.2.2 HTML右鍵菜單 121
8.2.3 系統(tǒng)右鍵菜單 124
8.2.4 自定義系統(tǒng)右鍵菜單 125
8.3 快捷鍵 126
8.3.1 監(jiān)聽網頁按鍵事件 126
8.3.2 監(jiān)聽全局按鍵事件 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 系統(tǒng)通知 131
8.6.1 使用HTML API發(fā)送系統(tǒng)通知 131
8.6.2 主進程內發(fā)送系統(tǒng)通知 132
8.7 其他 133
8.7.1 使用系統(tǒng)默認應用打開文件 133
8.7.2 接收拖拽到窗口中的文件 134
8.7.3 使用系統(tǒng)字體 135
8.7.4 最近打開的文件 137
8.8 本章小結 138
第9章 通信 139
9.1 與Web服務器通信 139
9.1.1 禁用同源策略以實現跨域 139
9.1.2 Node.js訪問HTTP服務的不足 141
9.1.3 使用WebSocket通信 142
9.1.4 截獲并修改網絡請求 144
9.2 與系統(tǒng)內其他應用通信 146
9.2.1 Electron應用與其他應用通信 146
9.2.2 網頁與Electron應用通信 148
9.3 自定義協(xié)議(protocol) 150
9.4 使用socks5代理 152
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 電源的基本狀態(tài)和事件 160
10.3.2 監(jiān)控系統(tǒng)掛起與鎖屏事件 161
10.3.3 阻止系統(tǒng)鎖屏 162
10.4 打印機 162
10.4.1 控制打印行為 162
10.4.2 導出PDF 164
10.5 硬件信息 165
10.5.1 獲取目標平臺硬件信息 165
10.5.2 使用硬件串號控制應用分發(fā) 166
10.6 本章小結 170
第11章 調測 171
11.1 測試 171
11.1.1 單元測試 171
11.1.2 界面測試 174
11.2 調試 177
11.2.1 渲染進程性能問題追蹤 177
11.2.2 自動追蹤性能問題 180
11.2.3 性能優(yōu)化技巧 182
11.2.4 開發(fā)環(huán)境調試工具 185
11.2.5 生產環(huán)境調試工具 186
11.3 日志 188
11.3.1 業(yè)務日志 188
11.3.2 網絡日志 189
11.3.3 崩潰報告 190
11.4 本章小結 193
第12章 安全 194
12.1 保護源碼 195
12.1.1 立即執(zhí)行函數 195
12.1.2 禁用開發(fā)者調試工具 196
12.1.3 源碼壓縮與混淆 198
12.1.4 使用asar保護源碼 201
12.1.5 使用V8字節(jié)碼保護源碼 202
12.2 保護客戶 204
12.2.1 禁用Node.js集成 204
12.2.2 啟用同源策略 204
12.2.3 啟用沙箱隔離 205
12.2.4 禁用webview標簽 205
12.3 保護網絡 206
12.3.1 屏蔽虛假證書 206
12.3.2 關于防盜鏈 209
12.4 保護數據 211
12.4.1 使用Node.js加密解密數據 211
12.4.2 保護lowdb數據 213
12.4.3 保護electron-store數據 213
12.4.4 保護用戶界面 214
12.5 提升穩(wěn)定性 214
12.5.1 捕獲全局異常 214
12.5.2 從異常中恢復 215
12.6 本章小結 216
第13章 發(fā)布 218
13.1 生成圖標 218
13.2 生成安裝包 219
13.3 代碼簽名 221
13.4 自動升級 222
13.5 本章小結 224
第14章 實戰(zhàn):自媒體內容發(fā)布工具 225
14.1 項目需求 225
14.2 項目架構 226
14.2.1 數據架構 226
14.2.2 技術架構 228
14.3 核心剖析 229
14.3.1 創(chuàng)建窗口并注入代碼 229
14.3.2 開始同步文章數據 230
14.3.3 檢查是否登錄 232
14.3.4 上傳文章圖片 233
14.3.5 設置文章標題 235
14.3.6 設置文章正文 236
14.3.7 其他工作 236
14.4 輔助功能 237
14.4.1 圖片縮放 237
14.4.2 用戶身份驗證 239
14.5 本章小結 240
附錄A Mac代碼簽名 242
結語 256