-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

跨平臺桌面應用開發:基于Electron與NW.js

( 簡體 字)
作者:Goddy Zhao類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社跨平臺桌面應用開發:基于Electron與NW.js 3dWoo書號: 48697
詢問書籍請說出此書號!

缺書
NT售價: 495

出版日:3/1/2018
頁數:360
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121334740
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯者序

Stack Over.ow 的聯合創始人 Jeff Atwood 說過一句非常經典的話: Any application that can be written in JavaScript, will eventually be written in JavaScript,翻譯過來就是:任何能使用 JavaScript 來編寫的應用,最終都會用 JavaScript 來實現。這句話被譽為 Atwood 定律。事實上,這句話正在不同領域被一次一次地驗證。以前 JavaScript 只是運行在瀏覽器沙箱環境中的腳本語言,而自從 2009 年 Node.js 問世后,JavaScript 在服務器端、物聯網領域、移動原生應用開發領域,乃至桌面應用開發領域都大放異彩。
以往要開發桌面應用,針對 Windows、Linux 以及 Mac OS 三大平臺要專門去學習各自平臺的編程語言和框架,成本高昂而且要做一款支持兼容三種平臺的桌面應用非常費時,基本都需要針對不同平臺的不同團隊才能實現。就我個人而言,幾年前我一直想學習 Objective-C 以及 Cocoa 來開發 Mac OS X 桌面應用,但是始終沒有成功。現如今, JavaScript 讓這一切都變得無比簡單。一名 Web 開發者就能開發出兼容三大操作系統的桌面應用。不僅大大降低了學習曲線,而且開發效率可以說呈指數級提升。這要歸功于 NW.js 和 Electron 這兩款目前最流行的使用 Web 技術開發桌面應用的開發框架。這兩款框架將 Chromium 和 Node.js 非常好地結合起來, Chromium使得 Web 開發技術能夠在桌面應用中得以施展, Node.js則提供了訪問操作系統 API 的能力,兩者的結合使得使用 JavaScript 開發桌面應用成為可能。
目前, NW.js 和 Electron 這兩款框架在全世界各大公司被廣泛使用。近幾年紅遍全球的 Slack就是使用 Electron 來開發他們的桌面應用的,國內阿里巴巴的企業應用—釘釘桌面應用,就是用 NW.js 來開發的,除此之外,全球范圍內越來越多的桌面應用都在采用這兩種框架進行開發。
本書是一本專門介紹如何使用 NW.js 和 Electron 框架來開發桌面應用的書。在國內,目前本書應該是第一本同時介紹 NW.js 和 Electron 開發桌面應用的圖書。而且本書內容非常系統,從框架的背景介紹、教你開發第一款桌面應用、深入剖析框架內部原理、通過豐富的示例應用介紹框架提供的多個 API,再到應用的測試、調試、跨平臺打包、構建和最終的發布,涵蓋整個開發到發布流程中的所有環節。而且本書的每一章中都有大量的實用示例,通過實際的編碼讓你感受使用 NW.js 的 Electron 開發桌面應用的體驗。書中每個示例應用都會分別介紹 NW.js 和 Electron 兩個版本如何實現、過程中需要注意的地方有哪些,非常有實踐價值。總的來說,本書不論是對于初學者還是有一定經驗的開發者,都是一本相當好的學習使用 NW.js 和 Electron 開發桌面應用的圖書。
最后,非常感謝電子工業出版社計算機出版分社的張春雨編輯對我的信任,將這本書交給我來翻譯;感謝本書的責任編輯劉舫對本書的辛苦付出;還要感謝本書的原作者 Paul B. Jensen,翻譯過程中遇到模棱兩可的地方,通過 Twitter 聯系他,他都能及時回復我,并給予詳細的解釋。
翻譯和寫書一樣,都是需要花費大量精力和時間的事情,自從翻譯完上一本《了不起的 Node.js》后,我就對自己說我再也不會干翻譯圖書的事情了,實在是太累了。但是,當出版社編輯找到我,給我看了原版樣書后,我還是沒忍住,因為雖然過程很累很苦,但是在書出版的那一刻,除了自己小小的虛榮心能夠得到一點滿足,更多的是一想到可以幫助到很多學習使用 NW.js 和 Electron 開發桌面應用的開發者,就覺得非常自豪,再累再苦都是值得的!當然,翻譯過程中難免會有錯誤的地方,也希望大家能夠多多指正!
謹以此書獻給在背后默默支持我的家人,特別是我的兩個孩子 —木木和一一,希望你們能夠健康快樂地成長,爸爸愛你們!
Goddy Zhao 2017 年 12 月 12 日于上海

推薦序

Electron 框架誕生于 2013 年,那個時候 Node.js 才剛剛流行起來。整個社區因 JavaScript 能夠在客戶端和服務器端運行而興奮不已,并且也在嘗試使用 JavaScript 來開發桌面應用。
我個人也對 JavaScript 技術很熱衷,而且 GUI 編程是我比較喜歡的領域。我自己寫過一些 Node.js 的模塊,這些模塊對主流的 GUI 工具提供了 JavaScript 的綁定,不過都做得一般,也沒有引起太多關注。
之后我發現了一個非常有趣的 Node.js模塊,叫作 node-webkit:這個簡單的模塊可以實現在 WebKit 瀏覽器中插入執行 Node.js 代碼。于是我有了一個點子,可以用它來開發一個具備完整功能的客戶端開發框架:我可以用 Chromium 來顯示 Web 頁面,就像桌面窗口一樣,然后其他的都用 Node.js 來控制!
當時 node-webkit 的開發并不活躍,于是我接手了這個項目并進行重寫,將它打造成一個完善的用于桌面應用開發的框架。當我完成第一版的時候,它可以用于開發小型的跨平臺應用,效果奇好!
與此同時, GitHub正在秘密開發一款基于 Web技術的 Atom編輯器,而且他們非常希望可以有一個更好的工具來替代目前 Atom不盡如人意的 Web運行時。 GitHub曾嘗試將 Atom遷移到 node-webkit,但是遇到了很多問題。我和他們的開發者碰了面并且最終我們達成一致:由我來開發一款新的框架,讓開發者使用 Node.js
技術和瀏覽器相關技術就可以開發桌面程序,然后再幫他們把 Atom遷移過來。
這款新的框架起初命名為 atom-shell;一年后,在正式開源的時候將其改名為 Electron。Electron是從零開始開發的,并且使用了和 node-webkit完全不同的底層架構,它可以讓開發者開發大型且復雜的桌面端應用。(如今, node-webkit交由其他開發者在維護開發,項目狀態也比較活躍。它現在叫 NW.js,使用也很廣泛。)
因為使用 Electron可以既簡單又快速地構建出復雜的跨平臺應用,所以它得到了許多開發者的關注,發展也很迅速。現如今,許多大公司都基于 Electron 開發了他們的桌面端產品,除此之外,小型創業公司也圍繞這個平臺在構建他們的業務。
使用 Electron 和 NW.js 開發桌面應用要求開發者掌握一些新的概念。桌面應用開發和前端程序開發截然不同,對于初學者來說也更難。不過本書可以幫助到大家。
本書將帶你一覽 Electron 和 NW.js 豐富的 API、教你如何開發桌面應用。你會學到許多使用 JavaScript 開發桌面應用的技術細節,包括如何構建和分發應用,以及如何將現有應用集成到桌面應用中的一些深度小技巧。本書還涵蓋了一些高級話題,如調試、分析以及在不同平臺發布應用,哪怕是有經驗的開發者也可以從中學到不少東西。
我建議所有想要開發桌面應用的讀者都來閱讀本書。讀完后你會驚訝于使用 JavaScript 和 Web 技術來進行跨平臺的桌面應用開發是一件多么簡單的事情。
Cheng Zhao Electron框架開發者

序言

幾年前我在一家叫 Axisto Media 的公司工作時,我們需要為一個健康行業大會開發一款桌面應用,用來展示大會的視頻、議題信息以及海報。當時這款應用是用 Adobe AIR 開發的。但是開發過程并不容易,而且客戶需要進行一些操作才能讓應用在他們的計算機中運行起來。好在我們后來找到了更好的解決方案。
我大概從 2013 年年底開始學習 NW.js(那個時候它叫 node-webkit)。我發現使用 NW.js 開發的桌面應用客戶用起來更方便,因為他們不再需要安裝 Adobe Flash 播放器,也不用把應用文件放到 U 盤里來加載。他們只需雙擊應用就可以運行了。不僅如此,我們還能提供 Linux版本,而且其技術棧和我們的業務本身的技術棧很契合,因為我們在其他地方也都使用 Node.js 技術。
我抓住了機會,使用 NW.js 去重新構建這款桌面應用并且摒棄一切,勇往直前。 NW.js 讓一切都變得更加簡單,這得益于它可以從大會網站的 Web 應用重用 HTML、 CSS和 JS代碼,我們可以讓桌面應用看上去樣式更加統一。這是一個巨大的好處。
我當時對這個框架非常滿意,于是決定在 2014 年 6 月的倫敦 Node.js 用戶組聚會上進行分享。后來我就把演示稿放到了網上。幾個月后,我發現這個演示稿在 SlideShare 網站上很快被查看了 20 000次。這太棒了,我以為這事就這樣了。
然而并沒有。
2014 年 12 月,我收到了一封來自 Manning 出版社 Erin Twohey 的電子郵件,他問我是否有興趣寫一本關于 node-webkit 的書。這簡直太棒了,我立刻就投入到這本書的寫作中。
那段時間發生了很多事情。Node.js 社區 fork 了 Node.js 項目并命名為 IO.js,他們加快了平臺新特性的開發,后來 IO.js 項目又合并回了 Node.js項目。 node-webkit 框架切換到了 IO.js,并且由于它使用了 Blink 而非 WebKit,因此改名為 NW.js。一年過去了,本書的寫作也臨近尾聲,就在這個時候,我們發現了另外一個可以用 Node.js 開發桌面應用的框架,叫 Electron。仔細一看,我發現 Electron 和 NW.js 很像,而且它的作者以前就是開發 NW.js 的。于是我們決定將 Electron 也寫到本書中。
寫一本書同時涵蓋兩種 Node.js 桌面應用開發框架是一個挑戰,不過最終還是完成了。本書涵蓋了使用 NW.js 和 Electron 開發桌面應用的基礎知識。盡管本書沒有面面俱到地介紹這兩個框架,但是足夠讓你了解它們的大部分特性以及如何使用的知識,這樣你就可以根據你的需求,選擇其中一個框架來構建桌面應用。
對于開發者來說這是一個很好的時代,有了像 NW.js 和 Electron 這樣的工具,構建桌面應用變得再簡單不過。Paul B. Jensen

致謝

寫書是非常艱難的項目之一,它需要投入大量的時間和精力。同時,還需要不少人的協助。我要感謝的人很多,他們都或多或少幫助過我。首先我要感謝 Manning 出版社負責本書的團隊: Erin Twohey、Ana Romac、 Candace Gillhoolhey、Rebecca Rinehart、Aleksandar Dragosavljevic、Toni Bowers、
ˊMehmed Pasic、Karen Gulliver、Katie Tennant、Janet Vail 以及 Lynn Beighley。促成本書的工作量之大是你難以想象的,在此過程中他們都極力幫助我完善本書。我還要感謝技術審校 Clive Harber 和以下這些審校人員: Angelo Costa、Daniel Baktiar、 Darko Bozhinovski、Deepak Karanth、Fernando Monteiro Kobayashi、Jeff Smith、 Matt Borack、Nicolas Boulet-Lavoie、Olivier Ducatteeuw、Patrick Regan、Patrick Rein、Robert Walsh、Rocio Chongtay、Stephen Byrne、Toni La.. hdekorpi、William Wheeler、Yogesh Poojari 以及 Marcelo Pires;同時感謝 Natko Stipanicˇ ev 在圖片方面提供的幫助。
感謝 Marjan Bace 給我寫作本書的機會。能為 Manning寫書是一種榮譽;我的書架上有不少 Manning出版社的書,現在他們的書架上多了一本我的書。還要感謝 Michael Stephens 在寫書之初幫助我制訂了本書的大綱、感謝他在面對我各種拖稿的時候能夠妥善處理、感謝他當我遇到個人困難的時候給予理解。
感謝我的開發編輯—Cynthia Kane。她完成了最困難的工作—激勵我完成每一個章節的內容。這是我的第一本書,你可以想象這個過程有多么痛苦。我有一份電子郵件歸檔,里面包含超過 150封郵件,這些都是她在我寫書階段發給我的,那個時候我在倫敦、阿姆斯特丹、愛爾蘭、意大利、紐約,然后又到阿姆斯特丹,最后又回到倫敦。在非常困難的 2016 年,Cynthia 始終耐心地激勵我將本書完成,而且盡管有時區問題,她都能及時地提供支持和幫助。萬分感激,謝謝 Cynthia。
感謝 Roger Wang和 Cheng Zhao開發了 NW.js 和 Electron—沒有他們的努力,這本書壓根就不可能存在。
感謝在倫敦 Starcount 的 Edwina Dunn 和 Clive Humby,很榮幸可以和他們共事,非常感激他們給予我的支持。
感謝 Purple Seven 的 Stuart Nicolle。Stuart 當年帶我入職并帶我領略了如何從藝術和戲劇分析世界中收集有用的信息。
感謝我的家人:我的母親 Jette、妹妹 Maria 和她的伙伴 Mark,已故的 Gran Lis 以及 Brenda 和 Jim。他們撫育我成人、在我人生道路上為我披荊斬棘。
我還想特別感謝 Fiona。她容忍了我寫書過程中的一切,甚至更多。本書能夠成功出版和她對我的支持和愛是分不開的。
最后我還想提一下我的父親 Wily,他是一名硬件和軟件工程師,非常聰明卻又不好相處。雖然我們從未正眼看過對方,但還是要感謝有這樣一位父親。

關于本書

NW.js 和 Electron 是基于 Node.js 開發的桌面應用框架。它們可以讓開發者使用 HTML、CSS 和 JavaScript 來構建跨平臺的桌面應用。它們為 Web 設計師和開發者新開辟了一條路,可以讓他們將已有的開發 Web 應用和界面的技能同樣用于桌面應用的開發。這兩個框架還支持將同一份應用代碼分發到 Mac OS、Windows 和 Linux,這意味著開發者在構建全平臺可用的應用時可以大大節約時間和精力。
NW.js 和 Electron 有一段共同的歷史,并且對部分特性的支持有類似的實現方式。本書在介紹每一個主題的時候都會同時介紹這兩個框架,幫助你了解兩者的共性和區別。這將有助于你判斷哪個框架更適合自己的需求。本書會介紹各類應用以及特性,從而激發你的學習熱情和興趣,還會對一些你可能想要開發但又不知如何開發的應用提供建議和想法。
希望你喜歡這本書,也希望你可以用本書中介紹的知識做一些很棒的事情。
誰應該閱讀本書
任何有過 HTML、CSS 和 JavaScript 開發經驗的人都可以閱讀本書并快速上手。 Node.js的開發經驗不是必需的,但是有的話讀起來會更加得心應手。如果你對于 HTML、CSS和 JavaScript完全陌生,那么在開始閱讀本書之前最好先去熟悉一下。
本書是如何組織的
本書共 18 個章節,分為 4個部分。
第 1部分主要介紹框架。
. 第 1章介紹 NW.js 和 Electron的入門知識,介紹它們是什么,緣何而來,介紹用這兩個框架開發出來的 Hello World 應用是怎樣的,還會介紹一些用它們開發出來的實用的應用。

. 第 2章通過構建一個文件瀏覽器應用來直接對比這兩個框架的異同。

. 第 3章繼續完成文件瀏覽器應用的部分功能。

. 第 4章通過構建可以在不同操作系統中運行的應用來結束第 1部分的內容。

讀完第 1部分后,你將學會如何使用這兩個框架開發一個功能完整的應用。第 2部分(第 5章和第 6章)從技術角度介紹了 NW.js和 Electron 的內部原理。

. 第 5章介紹 Node.js,它是 NW.js 和 Electron 底層使用的編程框架。本章介紹了 Node.js 是如何工作的,異步編程和同步編程的區別以及如何使用回調、流、事件和模塊。

. 第 6章介紹了 NW.js 和 Electron 是如何將 Chromium 和 Node.js 整合起來的,以及它們是如何處理前后端的狀態管理的。


這部分內容揭示了 NW.js 和 Electron 框架的內部機制,同時也有助于對 Node.js 陌生的人理解 Node.js。
本書的第 3部分介紹了如何使用 NW.js 和 Electron 實現桌面應用的特定功能。
. 第 7章介紹了如何設置桌面應用的顯示、控制窗口大小和屏幕的各種模式以及如何進行不同模式之間的切換。

. 第 8章介紹了如何構建在桌面托盤區域顯示托盤應用程序。

. 第 9章介紹了如何構建應用菜單以及應用內的上下文菜單。

. 第 10章介紹了如何在應用內實現拖曳文件以及如何在不同的操作系統中提供一致的樣式。

. 第 11章介紹了如何使用計算機的攝像頭實現一個自拍應用以及如何將拍攝的照片存儲到計算機中。

. 第 12章介紹了如何存取應用程序的數據。

. 第 13章介紹了如何在 NW.js 和 Electron 中使用剪貼板 API 實現應用程序和操作系統之間的內容復制和粘貼。

. 第 14章通過構建一個 2D 游戲介紹了如何在應用中支持快捷鍵,還介紹了如何實現系統級的快捷鍵操作。

. 第 15章通過構建一個推特消息流客戶端介紹了如何實現桌面消息提醒,以此來結束第 3部分的內容。這部分介紹了絕大部分 NW.js 和 Electron 都支持的特性,可幫助你了解這些特性框架是如何支持以及如何使用的,同時有助于判斷到底哪個框架更適合你的需求。本書最后一部分介紹了應用發布前需要做的工作:寫測試、調試代碼以及最終產出一個可執行的二進制包分發給客戶。
. 第 16章介紹了如何在不同粒度上測試桌面應用。介紹了單元測試、功能測試以及集成測試的概念,還介紹了使用 Cucumber 編寫應用特性需求文檔,使用 Spectron 為桌面應用做自動化集成測試。

. 第 17章介紹了如何調試代碼,以此發現應用的性能瓶頸和缺陷,還介紹了如何使用像 Devtron 這樣的工具來更進一步地分析你的應用。

. 第 18章介紹了針對不同操作系統為應用程序構建二進制執行文件以及安裝文件的多種方式,以此來結束這部分內容。


學完這部分內容后,你應該已經掌握了如何測試自己的應用、調試應用缺陷以及最終完成應用并分發給你的客戶。
關于代碼
本書包含諸多示例代碼,有標明序號的多行代碼,也有直接在正文中的單行代碼。不論是哪種形式,代碼都是以等寬字體的形式來表示的,以此來和正文進行區分。大多數情況下,源代碼都是格式化過的;為了適應書頁的空間添加了必要的換行和縮進。除此之外,當有專門解釋源代碼的文字時,代碼注釋通常就被去掉了。一般在多行代碼以及高亮顯示的重要概念時會有代碼注解。
內容簡介:

本書是一本同時介紹 Electron和 NW.js的圖書,這兩者是目前流行的支持使用 HTML、CSS 和 JavaScript 進行桌面應用開發的框架。書中包含大量的編碼示例,而且每個示例都是五臟俱全的實用應用,作者對示例中的關鍵代碼都做了非常詳細的解釋和說明,可讓讀者通過實際的編碼體會使用這兩款框架開發桌面應用的切實感受。除此之外,在內容上,本書非常系統,分為4大部分:第1部分介紹兩個框架的歷史背景,并教大家編寫第一個桌面應用,讓讀者對這兩個框架有一個初步的感受;第 2部分深入講解 NW.js和 Electron 的內部工作原理,幫助大家剖析這兩個框架的底層機制,讓讀者對它們有更深入的理解;第 3部分介紹使用框架提供的大量 API 來構建多款實用的桌面應用,全方位地讓讀者體會使用這兩個框架開發桌面應用帶來的舒適體驗;第 4部分為大家講解了,當開發完成后,如何對應用進行測試、跨平臺打包和發布。可以說這 4部分結合起來將開發桌面應用的整個流程系統化地講解得非常清楚、到位。相信結合書中大量的示例,讀者一定能很快掌握并自己使用 Electron和 NW.js構建出跨平臺的桌面應用。

目錄:

第1部分 歡迎來到 Node.js 桌面應用開發的世界
第1章 Electron和NW.js入門 .........3

1.1 為什么要用 Node.js 構建桌面應用 .4

1.1.1 桌面應用到 Web 應用,再回到桌面應用 ................4

1.1.2 Node.js 桌面應用相比 Web 應用有什么優勢 ..............6

1.2 NW.js 和 Electron 的起源 ......8

1.3 NW.js 介紹 ..............9

1.3.1 使用 NW.js 構建 Hello World 應用 ...................10

1.3.2 NW.js 有哪些特性......15

1.4 Electron 介紹 ............18

1.4.1 Electron 是如何工作的以及它和 NW.js 的區別是什么 ........19

1.4.2 使用 Electron 開發 Hello World 應用 ..................19

1.4.3 Electron 有哪些特性 ....25

1.5 NW.js 和 Electron 支持創建哪類應用 ......................25

1.5.1 Slack ..............26

1.5.2 Light Table ..........26

1.5.3 Game Dev Tycoon .......27

1.5.4 Gitter..............28

1.5.5 Macaw .............29

1.5.6 Hyper .............30

1.6 小結 .................31

第2章 為你的首款桌面應用搭建基礎架構.32

2.1 我們將構建什么應用 .........33

2.2 創建應用 ...............34

2.2.1 安裝 NW.js 和 Electron ....34

2.2.2 為 NW.js 版本的應用創建文件和文件夾...............35

2.2.3 為 Electron 版本的應用創建文件和文件夾 ...............37

2.3 實現啟動界面 .............39

2.3.1 在工具條中展示用戶個人文件夾信息 .................40

2.3.2 顯示用戶個人文件夾中的文件和文件夾 ...............44

2.4 小結 .................54

第3章 構建你的首款桌面應用.......56

3.1 瀏覽文件夾 .............57

3.1.1 重構代碼 ...........57

3.1.2 處理對文件夾的雙擊操作 .61

3.2 實現快速搜索 .............64

3.2.1 在工具條中增加搜索框 ...65

3.2.2 引入一個內存搜索庫 .....65

3.2.3 在界面上觸發搜索功能 ...67

3.3 改進應用內的導航功能 .......71

3.3.1 實現當前文件夾路徑可單擊 .......................71

3.3.2 讓應用隨著文件夾路徑的改變顯示對應的文件夾內容 .......74

3.3.3 實現使用默認應用打開對應的文件 ...................75

3.4 小結 .................77

第4章 分發你的首款桌面應用.......79

4.1 對應用進行與分發相關的設置 ...80

4.2 對要分發的應用進行打包 .....83

4.2.1 使用一種 NW.js 的構建工具.......................83

4.2.2 使用一種 Electron的構建工具 .....................84

4.2.3 設置應用的圖標 .......85

4.3 在多個操作系統中測試應用 .....91

4.3.1 Windows 操作系統 .....91

4.3.2 Linux 操作系統 ........92

4.3.3 Mac OS 系統.........92

4.4 小結 .................92

第2部分 深度剖析
第5章 在NW.js和Electron中使用Node.js..97

5.1 什么是 Node.js ............98

5.1.1 同步與異步 .........98

5.1.2 流是一等公民 .......101

5.1.3 事件 .............105

5.1.4 模塊 .............106

5.2 Node 包管理器 ...........109

5.2.1 尋找應用需要的模塊 ...109

5.2.2 使用 package.json記錄安裝的模塊 ..................109

5.2.3 使用 npm 打包模塊和應用 111

5.3 小結 ................. 114

第6章 探索NW.js和Electron的內部機制 .115

6.1 NW.js 內部是如何工作的 ...... 116

6.1.1 使用同一個 V8 實例 .... 117

6.1.2 集成主事件循環 ....... 118

6.1.3 橋接 Node.js 和 Chromium 的 JavaScript 上下文........... 119

6.2 Electron 內部是如何工作的 .... 119

6.2.1 libchromiumcontent 介紹 .120

6.2.2 Electron 中的組件 ......120

6.2.3 Electron 是如何將應用運行起來的 ..................121

6.3 Node.js是如何與NW.js以及Electron一起工作的 ...............122

6.3.1 Node.js 集成在 NW.js 的哪個位置..................122

6.3.2 在 NW.js中使用 Node.js 的缺點...................123

6.3.3 Electron 是怎么使用 Node.js 的 ....................123

6.4 小結 .................124

第3部分 精通Node.js桌面應用開發
第7章 自定義桌面應用的外觀.......127

7.1 視窗的尺寸和模式 .........127

7.1.1 配置 NW.js 應用的視窗尺寸.....................128

7.1.2 配置 Electron 應用的視窗尺寸 .....................129

7.1.3 在 NW.js 中限制視窗的尺寸.....................131

7.1.4 在 Electron 中限制視窗的尺寸 .....................133

7.2 無邊框應用以及全屏應用 .....134

7.2.1 NW.js 中的全屏應用....135

7.2.2 Electron 中的全屏應用 ..138

7.2.3 無邊框應用 .........140

7.2.4 kiosk 應用 .........145

7.3 小結 .................149

第8章 創建托盤應用 ...........150

8.1 使用 NW.js 創建簡單的托盤應用 .151

8.2 使用 Electron 創建托盤應用 ...156

8.3 小結 .................159

第9章 創建應用菜單以及上下文菜單..161

9.1 為應用添加菜單 ...........162

9.1.1 應用視窗菜單 .......162

9.1.2 使用 NW.js 為 Mac OS的應用創建菜單 ................162

9.1.3 使用 Electron 為 Mac OS的應用創建菜單 ..............163

9.1.4 為 Windows 和 Linux的應用創建菜單 ................166

9.1.5 基于操作系統來選擇渲染具體的菜單 .................173

9.2 上下文菜單 .............174

9.2.1 使用 NW.js 創建上下文菜單.....................174

9.2.2 NW.js 中的上下文菜單是如何工作的................179

9.2.3 設置菜單項圖標 .......180

9.2.4 使用 Electron 創建上下文菜單 .....................181

9.2.5 使用 Electron 添加上下文菜單 .....................184

9.3 小結 .................185

第10章 拖曳文件以及定制界面.....186

10.1 在應用中拖曳文件 .........186

10.1.1 使用 NW.js 實現在應用中拖曳文件 .................187

10.1.2 使用 Electron 實現拖曳功能 .....................190

10.2 模擬操作系統原生樣式 .....191

10.2.1 檢測用戶的操作系統 ...191

10.2.2 使用 NW.js檢測操作系統 .....................191

10.2.3 使用 Electron檢測操作系統 .....................192

10.2.4 使用 CSS匹配用戶操作系統的樣式 ...............194

10.3 小結 .................197

第11章 在應用中使用網絡攝像頭 .....198

11.1 使用 HTML5 媒體捕捉 API 來實現相片快照................198

11.1.1 解讀 NW.js 版的應用 ...199

11.1.2 使用 Electron 構建 Facebomb 應用.................205

11.2 小結 .................210

第12章 存儲應用數據 ...........211

12.1 應該使用哪種數據存儲方案 ... 211

12.2 使用 localStorage API 存儲便箋數據 ....................212

12.2.1 使用 Electron開發 Let Me Remember應用 .............213

12.2.2 使用 NW.js開發 Let Me Remember應用 ..............216

12.3 將待辦事項應用移植為桌面應用 .......................219

12.3.1 使用 NW.js 移植 TodoMVC Web 應用 ...............219

12.3.2 使用 Electron 移植 TodoMVC 應用 ................220

12.4 小結 .................222

第13章 從剪貼板復制和粘貼數據 .....223

13.1 訪問剪貼板數據 .........223

13.1.1 使用 NW.js 創建 Pearls 應用 .....................224

13.1.2 使用 Electron 創建 Pearls 應用 ...................228

13.1.3 使用 Electron 將不同類型的數據寫入剪貼板 ...........231

13.2 小結 .................232

第14章 綁定鍵盤快捷鍵 .........233

14.1 使用 NW.js 創建貪吃蛇游戲 ...234

14.1.1 使用 NW.js 在視窗獲取焦點的時候實現鍵盤快捷鍵 .......242

14.1.2 使用 NW.js 來創建全局鍵盤快捷鍵 .................243

14.2 使用 Electron 為貪吃蛇游戲創建全局快捷鍵 ...............245

14.3 小結 .................247

第15章 制作桌面通知 ...........248

15.1 關于你要構建的應用 .......249

15.2 使用 Electron 構建 Watchy 應用 .249

15.3 使用 NW.js 構建 Watchy 應用 ...254

15.4 小結 .................257

第4部分 準備發布
第16章 測試桌面應用 ...........261

16.1 測試應用的不同方法 .......262

16.1.1 測試驅動開發 .......262

16.1.2 行為驅動開發 .......264

16.1.3 不同層面的測試 .....265

16.2 單元測試 .............265

16.2.1 使用 Mocha 編寫測試 .266

16.2.2 讓待完成的測試變成執行通過的測試 ...............268

16.3 功能測試 .............271

16.3.1 功能測試實踐 .......272

16.3.2 使用 NW.js 和 ChromeDriver 進行測試 ...............272

16.4 使用Spectron測試Electron應用 .273

16.5 集成測試 .............275

16.5.1 Cucumber 介紹 .....276

16.5.2 使用 Cucumber和 Spectron對 Electron應用進行自動化測試 ..277
16.6 小結 .................280

第17章 調試并提升應用性能 ......281

17.1 了解你要調試的是什么 .....282

17.1.1 確定問題根本原因的位置 .....................283

17.1.2 使用瀏覽器開發者工具進行調試 .................284

17.2 修復 bug ..............287

17.2.1 使用 Node.js 的調試器來調試應用 ................288

17.2.2 使用 NW.js 的開發者工具來調試應用 ...............291

17.3 解決性能問題 ...........296

17.3.1 Network選項卡 ......296

17.3.2 Timeline選項卡 .....297

17.3.3 Pro.les選項卡 .....299

17.4 調試 Electron 應用 .........301

17.5 小結 .................307

第18章 為多平臺打包應用........308

18.1 為應用創建可執行文件 .....309

18.1.1 為 Windows 系統創建 NW.js 應用的可執行文件..........309

18.1.2 安裝虛擬機 .......309

18.1.3 為一個 NW.js應用創建針對 Windows系統的 .exe文件 .....310

18.1.4 為一個 Electron 應用創建 Windows 系統的可執行文件 ...... 311

18.2 為 Windows 的應用創建啟動安裝器....................314

18.2.1 使用 NW.js 創建 Windows 系統啟動安裝器............314

18.2.2 使用 Electron創建 Windows系統啟動安裝器 ..........321

18.3 為 Mac OS 創建 NW.js 應用的可執行文件 ..................324

18.3.1 創建 Mac 可執行應用 .324

18.3.2 為 Mac OS 創建 Electron 應用的可執行文件 ............327

18.4 為 Linux 創建可執行應用 .....329

18.4.1 為 Linux 創建獨立的 NW.js 應用文件 ...............330

18.4.2 為 Linux 創建獨立的 Electron 應用文件 .............331

18.5 小結 .................333

附錄A 安裝 Node.js............335
序: