內容簡介
為macOS、Windows和Linux平台創建套用 ? 使用原生作業系統API ? 使用諸如React等第三方框架 ? 將套用部署到Mac App Store 讀者需要具備一定的JavaScript和Node技能,但無須具有任何桌面套用開發經驗。
圖書目錄
第Ⅰ部分 Electron入門知識
第1 章 介紹Electron 3
1.1 什麼是Electron 3
1.1.1 什麼是Chromium Content Module 5
1.1.2 什麼是Node.js 6
1.2 哪些人在使用Electron 6
1.3 閱讀本書之前,需要知道些什麼 8
1.4 為何要使用Electron 8
1.4.1 重用現有技能 10
1.4.2 訪問原生作業系統API 10
1.4.3 更高運行許可權,更少功能限制 11
1.4.4 在瀏覽器環境中使用Node的功能 13
1.4.5 離線優先 14
1.5 Electron的工作原理 14
1.5.1 主進程 15
1.5.2 渲染器進程 15
1.6 對比Electron與NW.js 16
1.7 本章小結 17
第2 章 創建第一個Electron套用 19
2.1 創建一個書籤列表套用 20
2.1.1 組織Electron套用的結構 21
2.1.2 package.json 22
2.1.3 在項目中下載並安裝Electron 23
2.2 使用主進程 25
2.3 創建一個渲染器進程 26
2.3.1 從渲染器進程載入代碼 30
2.3.2 在渲染器進程中引入檔案 31
2.3.3 在渲染器進程中添加樣式 32
2.4 實現UI界面 33
2.4.1 在Electron中發出跨域請求 35
2.4.2 解析回響文本 36
2.4.3 使用Web Storage API存儲從回響中得到的信息 38
2.4.4 顯示請求的結果 39
2.4.5 預防錯誤 43
2.4.6 一個不期而至的bug 45
2.5 本章小結 49
第Ⅱ部分 使用Electron創建跨平台套用
第3 章 創建一個筆記套用 53
3.1 定義套用的目標 54
3.2 打下基礎 55
3.3 初始化並啟動套用 56
3.3.1 實現UI界面 57
3.3.2 優雅地顯示瀏覽器視窗 63
3.4 實現基本功能 64
3.5 調試Electron套用 67
3.5.1 調試渲染器進程 67
3.5.2 調試主進程 68
3.5.3 使用Visual Studio Code調試主進程 69
3.6 本章小結 72
第4 章 使用原生檔案對話框與實現跨進程通信 73
4.1 觸發原生檔案對話框 74
4.2 使用Node讀檔案內容 77
4.2.1 限定允許打開的檔案類型 78
4.2.2 在macOS系統中實現工作表對話框 81
4.3 實現跨進程通信 82
4.4 使用跨進程通信調用檔案打開功能 87
4.4.1 理解CommonJS模組系統 88
4.4.2 引入其他進程的功能 88
4.5 從主進程向渲染器進程傳送內容 90
4.6 本章小結 95
第5 章 創建多視窗套用 97
5.1 創建和管理多個視窗 98
5.1.1 主進程與多個視窗之間的通信 99
5.1.2 將指向當前視窗的引用傳給主進程 101
5.2 改進開新視窗的用戶體驗 103
5.3 與macOS集成 105
5.4 本章小結 108
第6 章 操作檔案 111
6.1 跟蹤當前打開的檔案 113
6.1.1 使用當前檔案的名稱更新視窗標題 114
6.1.2 檢測是否修改過當前檔案 116
6.1.3 啟用UI界面上的Save File和Revert按鈕 118
6.1.4 更新macOS系統的展示檔案 119
6.2 跟蹤最近打開的檔案 120
6.3 保存檔案 122
6.3.1 導出渲染的HTML內容 123
6.3.2 常用路徑 124
6.3.3 從渲染器進程保存檔案 125
6.3.4 保存當前檔案 125
6.3.5 回滾檔案 127
6.4 通過拖曳打開檔案 127
6.4.1 忽略無關區域的拖曳操作 127
6.4.2 提供可視化反饋 128
6.4.3 打開拖曳過來的檔案 131
6.5 監控檔案的變動 131
6.6 丟棄未保存的修改前提示用戶 134
6.7 本章小結 138
第7 章 創建套用選單和上下文選單 141
7.1 替換並複製默認選單 143
7.1.1 macOS系統的Edit選單消失之謎 144
7.1.2 替換Electron默認選單的隱形代價 146
7.1.3 實現Edit和Window選單 147
7.1.4 定義選單項的role屬性和鍵盤快捷鍵 148
7.1.5 恢復macOS系統的套用選單 149
7.1.6 添加Help選單 153
7.2 在選單中添加套用特有的功能 155
7.3 創建上下文選單 160
7.4 本章小結 162
第8 章 與作業系統更深入地集成以及動態啟用選單項 163
8.1 在渲染器進程(UI界面)中使用shell模組 164
8.2 在套用選單中使用shell模組 167
8.3 在上下文選單中使用shell模組 169
8.3.1 決定將功能放在選單中還是UI界面上 170
8.3.2 決定將功能放在套用選單還是上下文選單中 171
8.4 在適當的時候禁用選單項 171
8.4.1 動態啟用和禁用上下文選單中的選單項 172
8.4.2 動態啟用和禁用套用選單中的選單項 175
8.5 本章小結 181
第9 章 介紹tray模組 183
9.1 開始創建Clipmaster 184
9.2 使用tray模組創建一個套用 185
9.2.1 為macOS和Windows選擇不同的圖示 187
9.2.2 支持macOS的深色模式 188
9.2.3 從剪貼簿讀取內容並保存剪貼項 189
9.3 讀寫剪貼簿的內容 191
9.3.1 寫入剪貼簿 193
9.3.2 處理極端場景 195
9.4 註冊全局快捷鍵 198
9.5 顯示通知 201
9.6 在macOS系統中單擊選單欄圖示時,切換顯示的圖示 204
9.7 完整的代碼 205
9.8 本章小結 208
第10 章 在套用中使用menubar庫 209
10.1 使用menubar開始創建套用 210
10.2 向UI界面添加剪貼項 214
10.3 在套用中操作剪貼項 216
10.3.1 使用事件代理避免記憶體泄漏 216
10.3.2 刪除一個剪貼項 217
10.3.3 將數據寫入剪貼簿 219
10.4 發布剪貼項 220
10.5 顯示通知和註冊全局快捷鍵 223
10.5.1 註冊全局快捷鍵 224
10.5.2 處理從未打開過視窗的極端場景 226
10.6 添加第二個選單 227
10.7 本章小結 229
第11 章 使用轉譯器和框架 231
11.1 介紹electron-compile 233
11.2 打造套用的基礎 234
11.3 在React中創建UI界面 241
11.3.1 Application組件 241
11.3.2 顯示物品列表 244
11.4 添加新的物品 248
11.5 實時重新載入與模組熱載入 252
11.5.1 啟用實時重新載入 252
11.5.2 實現模組熱載入 253
11.6 本章小結 256
第12 章 保存用戶數據以及使用Node.js原生模組 259
12.1 在SQLite資料庫中存儲數據 260
12.1.1 使用electron-rebuild確保編譯出正確的版本 261
12.1.2 使用SQLite和Knex.js 262
12.1.3 將資料庫功能掛載到React套用 263
12.1.4 從資料庫獲取所有數據項 265
12.1.5 向資料庫中添加數據項 266
12.1.6 更新資料庫中的數據項 268
12.1.7 刪除數據項 270
12.1.8 將資料庫存儲在正確的地方 275
12.2 IndexedDB 276
12.2.1 在IndexedDB中創建倉庫 277
12.2.2 從IndexedDB獲取數據 278
12.2.3 向IndexedDB寫入數據 279
12.2.4 將資料庫操作連線到UI界面 282
12.3 本章小結 284
第13 章 使用Spectron測試套用 285
13.1 介紹Spectron 287
13.2 使用Spectron和WebdriverIO 289
13.3 設定Spectron和測試運行器 290
13.4 使用Spectron編寫異步測試 292
13.4.1 等待視窗載入 293
13.4.2 測試Electron Browser Window API 294
13.4.3 使用Spectron遍歷和測試DOM 294
13.4.4 使用Spectron控制Electron API 297
13.5 本章小結 298
第Ⅲ部分 部署Electron套用
第14 章 構建並部署套用 301
14.1 介紹Electron Packager 302
14.1.1 設定Electron Packager 302
14.1.2 配置輸出 304
14.1.3 配置套用的名稱和版本 304
14.1.4 更新套用圖示 305
14.1.5 針對多個作業系統進行構建 306
14.2 使用asar檔案檔案 307
14.3 Electron Forge 310
14.3.1 將一個Electron套用導入Electron Forge 311
14.3.2 使用Electron Forge構建套用 312
14.4 本章小結 313
第15章 發布和更新套用 315
15.1 收集崩潰報告 315
15.1.1 設定崩潰報告 316
15.1.2 設定一台接收崩潰報告的伺服器 319
15.1.3 報告未捕獲異常 322
15.2 套用簽名 324
15.2.1 簽署macOS套用 325
15.2.2 在Windows系統中創建安裝程式和進行代碼簽名 328
15.3 自動更新套用 331
15.3.1 在Electron中設定自動升級 332
15.3.2 搭建一台自動更新伺服器 334
15.4 本章小結 337
第16 章 通過Mac App Store分發套用 339
16.1 將套用提交到Mac App Store 339
16.1.1 簽署套用 340
16.1.2 向Mac App Store註冊套用 345
16.1.3 將套用添加到iTunes Connect 346
16.1.4 為Mac App Store打包套用 348
16.1.5 配置套用類別 352
16.1.6 註冊套用以打開一種檔案類型 352
16.2 驗證和上傳套用 354
16.3 收尾事項 355
16.4 本章小結 355
附錄 Fire Sale和Clipmaster 9000的原始碼 357