Electron跨平臺開發實戰 ( 簡體 字) |
作者:[美]史蒂文·金尼(Steve Kinney)著,涂曙光 譯 | 類別:1. -> 程式設計 -> 搜索引擎 |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 51775 詢問書籍請說出此書號!【缺書】 NT售價: 490 元 |
出版日:9/1/2019 |
頁數:392 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302534891 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:《Electron跨平臺開發實戰》的主要目標是幫助你快速著手創建Electron應用。通過將各種基礎概念體現于實踐代碼之中,我們可以更好地學習這些概念。這《Electron跨平臺開發實戰》不僅介紹Electron的基礎知識,還會提供創建新應用的靈感和點子。 《Electron跨平臺開發實戰》讀者對象 《Electron跨平臺開發實戰》適用于這樣一些受眾:想要創建功能遠遠超出瀏覽器功能的桌面應用的人;想要為自己創建一款滿足個人需要的桌面應用,但又不希望重新學習一門新的編程語言或框架的人;想要突破自身能力,使用同一份代碼創建運行于多個操作系統之上應用的小型團隊。而在筆者的內心深處,《Electron跨平臺開發實戰》既適用于想要為命令行應用創建GUI界面的人,也適用于希望無須在計算機上安裝Node.js即可運行應用程序或工具的人。 《Electron跨平臺開發實戰》假設讀者已經熟練掌握了JavaScript,但是由于讀者的技術背景各不相同,有些讀者可能只對某個領域比較有經驗,所以如果書中講到了讀者可能不熟悉的Web或Node.js知識點,我會對它們進行講解。 《Electron跨平臺開發實戰》的組織結構:路線圖 《Electron跨平臺開發實戰》分為16章。各章的內容都前后銜接、循序漸進。如果只想了解如何在你的應用中實現某個特定功能,也可以直接跳到相關章節進行閱讀。 第1章將講述Electron是什么。我們可以看到一些Electron能夠做到,而瀏覽器和Node.js無法獨自做到的事情。 第2章將開始創建一個簡單的Electron應用。該章的目標是通過親自動手實踐,讓讀者了解使用Electron創建一個應用是多么容易。 第3章將介紹《Electron跨平臺開發實戰》中的一個主要應用—— Fire Sale,這是一個讓用戶可以打開文件系統中的Markdown文件并對它們進行編輯的應用。 第4章將介紹如何使用原生系統對話框和警示框,用戶可以使用對話框從文件系統中選擇一個文件并在Fire Sale中編輯它。Fire Sale應用會模糊DOM與Node標準庫之間的界線,協調兩者以實現對話框功能。 第5章將向應用添加多窗口支持,多窗口會引出一系列單瀏覽器窗口應用和無窗口Node.js應用不會遇到的問題。 第6章將引入更多的原生操作系統集成功能。我們將把Fire Sale中打開的文檔添加到操作系統的最近打開文件列表中,創建一個檢查當前打開的文件是否已被其他應用修改的監聽器,并根據當前文件是否有未保存的更改,更新窗口標題欄中顯示的文本。 第7章將探討如何創建原生應用菜單和上下文菜單,前者被一個應用的所有窗口共享,后者會在用戶右擊鼠標時彈出。 第8章將講解如何基于應用的狀態更新應用菜單,包括啟用或禁用指定的菜單項。 第9章將創建一種駐留在macOS的菜單欄中或Windows的系統托盤區域的新型應用。Web應用是無法將自己駐留在這些區域的。你在該章會創建Clipmaster應用,這是一個精簡的剪貼板管理器,可以從系統剪貼板讀取和寫入內容,響應全局快捷鍵,并在完成操作時向用戶顯示通知。 第10章將使用第三方庫,創建一個像Fire Sale那樣有UI界面的新版Clipmaster應用。這個新版本的名稱是Clipmaster 9000,它可以訪問GitHub的Gist API,并且可以通過快捷鍵把保存的剪貼項發布到另一個Web系統。 之前我們一直在使用標準JavaScript語言實現Electron應用的功能。在第11章,將展示如何在應用中使用Babel、TypeScript和CoffeeScript等可轉譯為JavaScript的語言,以及Sass和Less等可轉譯為CSS的語言。你在該章會使用React創建一個名為Jetsetter的旅行打包列表應用。 第12章將介紹如何將數據保存到數據庫,將演示在客戶端代碼中,如何使用SQLite數據庫實現數據讀寫操作。除了SQLite之外,還會演示使用基于瀏覽器的IndexedDB數據庫。 第13章將介紹Spectron這個測試工具,它讓開發者可以為Electron應用編寫Selenium測試代碼。我們將為前面章節創建的Clipmaster 9000應用編寫一組測試。 第14章將介紹對應用進行打包的工具。使用工具打包應用之后,可以將它們分發給不想僅通過命令行啟動應用的用戶。其實不光是用戶,很多開發者也不太喜歡使用命令行啟動應用。 第15章涵蓋如何為macOS應用簽名,如何創建Windows安裝程序,以及如何創建用于收集錯誤日志和崩潰報告的簡單服務器。 第16章將講解如何把應用發布到Mac App Store。如果你更喜歡自己分發應用,就不必把應用發布到Mac App Store。但是,如果你確實想那樣做但又對流程不熟悉,那么該章對你會非常有幫助。 關于代碼 《Electron跨平臺開發實戰》包含許多源代碼示例,一些以單獨的代碼清單形式出現,另一些則直接插入正文。有時,代碼會以粗體標出,以表示它們相對于當前章節的前面部分已經發生變化,這通常是由于向原有代碼添加新功能導致的。 在許多場景中,原始代碼都被重新格式化,我們做了折行處理,并重新規劃了縮進,以滿足排版需求。在極少的情況下,即使重新格式化代碼也仍然不夠,所以會用到行連續符號(?),表示書頁上的兩行實際上是連續的單行代碼。此外,使用文本對代碼進行說明時,通常會從代碼清單中將注釋刪除。許多代碼清單都帶有額外的文字標注,以突出代碼里面重要的概念。
|
內容簡介:為macOS、Windows和Linux平臺創建應用 ? 使用原生操作系統API ? 使用諸如React等第三方框架 ? 將應用部署到Mac App Store 讀者需要具備一定的JavaScript和Node技能,但無須具有任何桌面應用開發經驗。 |
目錄:第Ⅰ部分Electron入門知識 第1章介紹Electron3 1.1什么是Electron3 1.1.1什么是ChromiumContentModule5 1.1.2什么是Node.js6 1.2哪些人在使用Electron6 1.3閱讀本書之前,需要知道些什么8 1.4為何要使用Electron8 1.4.1重用現有技能10 1.4.2訪問原生操作系統API10 1.4.3更高運行權限,更少功能限制11 1.4.4在瀏覽器環境中使用Node的功能13 1.4.5離線優先14 1.5Electron的工作原理14 1.5.1主進程15 1.5.2渲染器進程15 1.6對比Electron與NW.js16 1.7本章小結17 第2章創建第一個Electron應用19 2.1創建一個書簽列表應用20 2.1.1組織Electron應用的結構21 2.1.2package.json22 2.1.3在項目中下載并安裝Electron23 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使用WebStorageAPI存儲從響應中得到的信息38 2.4.4顯示請求的結果39 2.4.5預防錯誤43 2.4.6一個不期而至的bug45 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使用VisualStudioCode調試主進程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界面上的SaveFile和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.1macOS系統的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開始創建Clipmaster184 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-compile233 11.2打造應用的基礎234 11.3在React中創建UI界面241 11.3.1Application組件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.js262 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.2IndexedDB276 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介紹Spectron287 13.2使用Spectron和WebdriverIO289 13.3設置Spectron和測試運行器290 13.4使用Spectron編寫異步測試292 13.4.1等待窗口加載293 13.4.2測試ElectronBrowserWindowAPI294 13.4.3使用Spectron遍歷和測試DOM294 13.4.4使用Spectron控制ElectronAPI297 13.5本章小結298 第Ⅲ部分部署Electron應用 第14章構建并部署應用301 14.1介紹ElectronPackager302 14.1.1設置ElectronPackager302 14.1.2配置輸出目錄304 14.1.3配置應用的名稱和版本304 14.1.4更新應用圖標305 14.1.5針對多個操作系統進行構建306 14.2使用asar檔案文件307 14.3ElectronForge310 14.3.1將一個Electron應用導入ElectronForge311 14.3.2使用ElectronForge構建應用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章通過MacAppStore分發應用339 16.1將應用提交到MacAppStore339 16.1.1簽署應用340 16.1.2向MacAppStore注冊應用345 16.1.3將應用添加到iTunesConnect346 16.1.4為MacAppStore打包應用348 16.1.5配置應用類別352 16.1.6注冊應用以打開一種文件類型352 16.2驗證和上傳應用354 16.3收尾事項355 16.4本章小結355 附錄FireSale和Clipmaster9000的源代碼357 |
序: |