Electron實(shí)戰(zhàn):入門、進(jìn)階與性能優(yōu)化
定 價(jià):79 元
- 作者:劉曉倫
- 出版時(shí)間:2020/5/1
- ISBN:9787111653745
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TN702
- 頁(yè)碼:0
- 紙張:
- 版次:
- 開本:16開
內(nèi)容簡(jiǎn)介
本書以實(shí)戰(zhàn)為導(dǎo)向,講解了如何用Electron結(jié)合現(xiàn)代前端技術(shù)來開發(fā)桌面應(yīng)用。不僅全面介紹了Electron入門需要掌握的功能和原理,而且還針對(duì)Electron開發(fā)中的重點(diǎn)和難點(diǎn)進(jìn)行了重點(diǎn)講解,旨在幫助讀者實(shí)現(xiàn)快速進(jìn)階。作者是Electron領(lǐng)域的早期實(shí)踐者,項(xiàng)目經(jīng)驗(yàn)非常豐富,本書內(nèi)容得到了來自阿里等大企業(yè)的一線專家的高度評(píng)價(jià)。
本書遵循漸進(jìn)式的原則逐步傳遞知識(shí)給讀者,書中以Electron知識(shí)為主線并對(duì)現(xiàn)代前端知識(shí)進(jìn)行了有序的整合,對(duì)易發(fā)問題從深層原理的角度進(jìn)行講解,對(duì)普適需求以*佳實(shí)踐的方式進(jìn)行講解,同時(shí)還介紹了Electron生態(tài)內(nèi)的大量組件和項(xiàng)目。
全書一共14章:
第1章講解Electron因何而來,Electron的生態(tài)、優(yōu)勢(shì)和不足,以及Electron未來的競(jìng)爭(zhēng)者PWA技術(shù);
第2章帶領(lǐng)讀者新建了一個(gè)簡(jiǎn)單的Electron項(xiàng)目,同時(shí)為讀者介紹了一些Electron的基礎(chǔ)知識(shí);
第3章講解了主進(jìn)程和渲染進(jìn)程的相關(guān)內(nèi)容;
第4章介紹了如何把現(xiàn)代前端框架引入Electron項(xiàng)目中,集中介紹了webpack、Angular、React和Vue等框架;
第5~3章依次詳細(xì)講解了界面、數(shù)據(jù)持久化、操作系統(tǒng)API訪問、硬件設(shè)備訪問、測(cè)試、調(diào)試、安全、發(fā)布等技術(shù)及其背后的原理
第14章通過一個(gè)完整的工程項(xiàng)目串聯(lián)了Electron的核心技術(shù)并展示了Electron項(xiàng)目開發(fā)的完整流程。
推薦序
前 言
第1章 認(rèn)識(shí)Electron 1
1.1 Electron的由來 1
1.2 基于Electron的應(yīng)用 4
1.3 Electron的生態(tài) 5
1.4 Electron的優(yōu)勢(shì) 5
1.5 Electron的不足 6
1.6 未來的競(jìng)爭(zhēng)者PWA 7
1.7 本章小結(jié) 9
第2章 輕松入門 10
2.1 搭建開發(fā)環(huán)境 10
2.2 創(chuàng)建窗口界面 13
2.3 啟動(dòng)窗口 14
2.4 引用JavaScript 16
2.5 Electron API演示工具 19
2.6 試驗(yàn)工具Electron Fiddle 20
2.7 本章小結(jié) 22
第3章 主進(jìn)程和渲染進(jìn)程 23
3.1 區(qū)分主進(jìn)程與渲染進(jìn)程 23
3.2 進(jìn)程調(diào)試 25
3.2.1 調(diào)試主進(jìn)程 25
3.2.2 調(diào)試渲染進(jìn)程 27
3.3 進(jìn)程互訪 29
3.3.1 渲染進(jìn)程訪問主進(jìn)程對(duì)象 29
3.3.2 渲染進(jìn)程訪問主進(jìn)程類型 30
3.3.3 渲染進(jìn)程訪問主進(jìn)程自定義內(nèi)容 31
3.3.4 主進(jìn)程訪問渲染進(jìn)程對(duì)象 32
3.4 進(jìn)程間消息傳遞 32
3.4.1 渲染進(jìn)程向主進(jìn)程發(fā)送消息 32
3.4.2 主進(jìn)程向渲染進(jìn)程發(fā)送消息 34
3.4.3 渲染進(jìn)程之間消息傳遞 36
3.5 remote模塊的局限性 36
3.6 本章小結(jié) 38
第4章 引入現(xiàn)代前端框架 39
4.1 引入webpack 39
4.1.1 認(rèn)識(shí)webpack 39
4.1.2 配置webpack 40
4.1.3 主進(jìn)程入口程序 42
4.1.4 渲染進(jìn)程入口程序 43
4.1.5 自定義入口頁(yè)面 45
4.1.6 使用jQuery 46
4.2 引入Angular 46
4.2.1 認(rèn)識(shí)Angular 46
4.2.2 環(huán)境搭建 47
4.2.3 項(xiàng)目結(jié)構(gòu) 48
4.3 引入React 48
4.3.1 認(rèn)識(shí)React 48
4.3.2 環(huán)境搭建 49
4.3.3 項(xiàng)目結(jié)構(gòu) 50
4.3.4 項(xiàng)目引薦 50
4.4 引入Vue 50
4.4.1 認(rèn)識(shí)Vue 50
4.4.2 環(huán)境搭建 51
4.4.3 項(xiàng)目結(jié)構(gòu) 52
4.4.4 調(diào)試配置 53
4.5 本章小結(jié) 55
第5章 窗口 56
5.1 窗口的常用屬性及應(yīng)用場(chǎng)景 56
5.2 窗口標(biāo)題欄和邊框 58
5.2.1 自定義窗口的標(biāo)題欄 58
5.2.2 窗口的控制按鈕 62
5.2.3 窗口最大化狀態(tài)控制 63
5.2.4 防抖與限流 65
5.2.5 記錄與恢復(fù)窗口狀態(tài) 67
5.2.6 適時(shí)地顯示窗口 68
5.3 不規(guī)則窗口 69
5.3.1 創(chuàng)建不規(guī)則窗口 69
5.3.2 點(diǎn)擊穿透透明區(qū)域 71
5.4 窗口控制 72
5.4.1 阻止窗口關(guān)閉 72
5.4.2 多窗口競(jìng)爭(zhēng)資源 74
5.4.3 模態(tài)窗口與父子窗口 75
5.4.4 Mac系統(tǒng)下的關(guān)注點(diǎn) 76
5.5 本章小結(jié) 78
第6章 界面 79
6.1 頁(yè)面內(nèi)容 79
6.1.1 獲取webContents實(shí)例 79
6.1.2 頁(yè)面加載事件及觸發(fā)順序 81
6.1.3 頁(yè)面跳轉(zhuǎn)事件 82
6.1.4 單頁(yè)應(yīng)用中的頁(yè)內(nèi)跳轉(zhuǎn) 83
6.1.5 頁(yè)面縮放 84
6.1.6 渲染海量數(shù)據(jù)元素 85
6.2 頁(yè)面容器 88
6.2.1 webFrame 88
6.2.2 webview 90
6.2.3 BrowserView 91
6.3 腳本注入 93
6.3.1 通過preload參數(shù)注入腳本 93
6.3.2 通過executeJavaScript注入腳本 97
6.3.3 禁用窗口的beforeunload事件 99
6.4 頁(yè)面動(dòng)效 100
6.4.1 使用CSS控制動(dòng)畫 100
6.4.2 使用JavaScript控制動(dòng)畫 101
6.5 本章小結(jié) 102
第7章 數(shù)據(jù) 103
7.1 使用本地文件持久化數(shù)據(jù) 103
7.1.1 用戶數(shù)據(jù)目錄 103
7.1.2 讀寫本地文件 105
7.1.3 值得推薦的第三方庫(kù) 106
7.2 使用瀏覽器技術(shù)持久化數(shù)據(jù) 107
7.2.1 瀏覽器數(shù)據(jù)存儲(chǔ)技術(shù)對(duì)比 107
7.2.2 使用第三方庫(kù)訪問IndexedDB 108
7.2.3 讀寫受限訪問的Cookie 110
7.2.4 清空瀏覽器緩存 112
7.3 使用SQLite持久化數(shù)據(jù) 112
7.4 本章小結(jié) 115
第8章 系統(tǒng) 116
8.1 系統(tǒng)對(duì)話框 116
8.1.1 使用系統(tǒng)文件對(duì)話框 116
8.1.2 關(guān)于對(duì)話框 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)聽網(wǎng)頁(yè)按鍵事件 126
8.3.2 監(jiān)聽全局按鍵事件 126
8.4 托盤圖標(biāo) 127
8.4.1 托盤圖標(biāo)閃爍 127
8.4.2 托盤圖標(biāo)菜單 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 主進(jìn)程內(nèi)發(fā)送系統(tǒng)通知 132
8.7 其他 133
8.7.1 使用系統(tǒng)默認(rèn)應(yīng)用打開文件 133
8.7.2 接收拖拽到窗口中的文件 134
8.7.3 使用系統(tǒng)字體 135
8.7.4 最近打開的文件 137
8.8 本章小結(jié) 138
第9章 通信 139
9.1 與Web服務(wù)器通信 139
9.1.1 禁用同源策略以實(shí)現(xiàn)跨域 139
9.1.2 Node.js訪問HTTP服務(wù)的不足 141
9.1.3 使用WebSocket通信 142
9.1.4 截獲并修改網(wǎng)絡(luò)請(qǐng)求 144
9.2 與系統(tǒng)內(nèi)其他應(yīng)用通信 146
9.2.1 Electron應(yīng)用與其他應(yīng)用通信 146
9.2.2 網(wǎng)頁(yè)與Electron應(yīng)用通信 148
9.3 自定義協(xié)議(protocol) 150
9.4 使用socks5代理 152
9.5 本章小結(jié) 153
第10章 硬件 154
10.1 屏幕 154
10.1.1 獲取擴(kuò)展屏幕 154
10.1.2 在自助服務(wù)機(jī)中使用Electron 156
10.2 音視頻設(shè)備 158
10.2.1 使用攝像頭和麥克風(fēng) 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 打印機(jī) 162
10.4.1 控制打印行為 162
10.4.2 導(dǎo)出PDF 164
10.5 硬件信息 165
10.5.1 獲取目標(biāo)平臺(tái)硬件信息 165
10.5.2 使用硬件串號(hào)控制應(yīng)用分發(fā) 166
10.6 本章小結(jié) 170
第11章 調(diào)測(cè) 171
11.1 測(cè)試 171
11.1.1 單元測(cè)試 171
11.1.2 界面測(cè)試 174
11.2 調(diào)試 177
11.2.1 渲染進(jìn)程性能問題追蹤 177
11.2.2 自動(dòng)追蹤性能問題 180
11.2.3 性能優(yōu)化技巧 182
11.2.4 開發(fā)環(huán)境調(diào)試工具 185
11.2.5 生產(chǎn)環(huán)境調(diào)試工具 186
11.3 日志 188
11.3.1 業(yè)務(wù)日志 188
11.3.2 網(wǎng)絡(luò)日志 189
11.3.3 崩潰報(bào)告 190
11.4 本章小結(jié) 193
第12章 安全 194
12.1 保護(hù)源碼 195
12.1.1 立即執(zhí)行函數(shù) 195
12.1.2 禁用開發(fā)者調(diào)試工具 196
12.1.3 源碼壓縮與混淆 198
12.1.4 使用asar保護(hù)源碼 201
12.1.5 使用V8字節(jié)碼保護(hù)源碼 202
12.2 保護(hù)客戶 204
12.2.1 禁用Node.js集成 204
12.2.2 啟用同源策略 204
12.2.3 啟用沙箱隔離 205
12.2.4 禁用webview標(biāo)簽 205
12.3 保護(hù)網(wǎng)絡(luò) 206
12.3.1 屏蔽虛假證書 206
12.3.2 關(guān)于防盜鏈 209
12.4 保護(hù)數(shù)據(jù) 211
12.4.1 使用Node.js加密解密數(shù)據(jù) 211
12.4.2 保護(hù)lowdb數(shù)據(jù) 213
12.4.3 保護(hù)electron-store數(shù)據(jù) 213
12.4.4 保護(hù)用戶界面 214
12.5 提升穩(wěn)定性 214
12.5.1 捕獲全局異常 214
12.5.2 從異常中恢復(fù) 215
12.6 本章小結(jié) 216
第13章 發(fā)布 218
13.1 生成圖標(biāo) 218
13.2 生成安裝包 219
13.3 代碼簽名 221
13.4 自動(dòng)升級(jí) 222
13.5 本章小結(jié) 224
第14章 實(shí)戰(zhàn):自媒體內(nèi)容發(fā)布工具 225
14.1 項(xiàng)目需求 225
14.2 項(xiàng)目架構(gòu) 226
14.2.1 數(shù)據(jù)架構(gòu) 226
14.2.2 技術(shù)架構(gòu) 228
14.3 核心剖析 229
14.3.1 創(chuàng)建窗口并注入代碼 229
14.3.2 開始同步文章數(shù)據(jù) 230
14.3.3 檢查是否登錄 232
14.3.4 上傳文章圖片 233
14.3.5 設(shè)置文章標(biāo)題 235
14.3.6 設(shè)置文章正文 236
14.3.7 其他工作 236
14.4 輔助功能 237
14.4.1 圖片縮放 237
14.4.2 用戶身份驗(yàn)證 239
14.5 本章小結(jié) 240
附錄A Mac代碼簽名 242
結(jié)語(yǔ) 256