第1部分 欢迎来到Node.js桌面应用开发的世界 3
第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部分 深度剖析 97
第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桌面应用开发 127
第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部分 准备发布 261
第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 Profiles选项卡 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