书籍详情
深入浅出Electron:原理、工程与实践
作者:刘晓伦
出版社:机械工业出版社
出版时间:2021-12-01
ISBN:9787111696094
定价:¥99.00
购买这本书可以去
内容简介
这是一本能帮助读者夯实Electron基础进而开发出稳定、健壮的Electron应用的著作。书中对Electron的工作原理、大型工程构建、常见技术方案、周边生态工具等进行了细致、深入地讲解。工作原理维度:对Electron及其周边工具的原理进行了深入讲解,包括Electron依赖包的原理、Electron原理、electron-builder的原理等。工程构建维度:讲解了如何驾驭和构建一个大型Electron工程,包括使用各种现代前端构建工具构建Electron工程、自动化测试、编译和调试Electron源码等。技术方案维度:总结了实践过程中遇到的一些技术难题以及应对这些难题的技术方案,包括跨进程消息总线、窗口池、大数据渲染、点对点通信等。周边工具维度:作者根据自己的“踩坑”经验和教训,有针对性地讲解了大量Electron的周边工具、库和技术,涉及Qt开发框架、C 语言、Nodejs框架甚至Vite构建工具等,帮助读者拓宽技术广度,掌握开发Electron应用需要的全栈技术。
作者简介
刘晓伦资深技术专家,有10余年研发经验,是Electron及其相关技术在企业应用领域的早期实践者,GitHub/Gitee优秀开源项目作者。作者还为Electron项目提交过数个Issue和Pull Request均被官方接纳。原远传研发中心负责人、小远机器人研发总监。现在担任一家创业公司的技术负责人,负责的产品以Electron为主要技术方向。除此之外,作者还有着十余年的前端及C (Qt)的开发经验,深入研究过Chromium的源码及相关的协议(DevTools Protocol和V8 Debugger Protocol),其主导研发的产品为数家世界五百强企业提供服务。
目录
【第1部分 原理】
第1章 Electron包原理解析 3
1.1 安装失败 3
1.2 npm钩子 4
1.3 镜像策略 6
1.4 缓存策略 9
1.5 注入命令 11
1.6 共享环境变量 13
1.7 合适的版本 15
第2章 Electron原理解析 17
2.1 Chromium原理 17
2.2 Node.js原理 20
2.3 源码结构 23
2.4 主进程Node.js环境 25
2.5 公开API 27
2.6 不同进程不同的API 31
2.7 加载应用入口脚本 32
2.8 提供系统底层支持 34
2.9 解析asar文件 37
2.10 渲染进程Node.js环境 41
2.11 支持不同的操作系统 42
2.12 进程间通信 45
2.13 页面事件 48
第3章 electron-builder原理解析 52
3.1 使用方法 52
3.2 原理介绍 53
3.3 伪交叉编译 57
3.4 辅助工具app-builder 59
3.5 为生产环境安装依赖 61
3.6 生成asar 62
3.7 修改可执行程序 63
3.8 NSIS介绍 66
3.9 生成安装包 68
第4章 electron-updater原理解析 71
4.1 使用方法 71
4.2 如何校验新版本的安装包 73
4.3 Windows应用升级原理 75
4.4 Mac应用升级原理 78
第5章 其他重要原理 80
5.1 缓存策略与控制 80
5.2 V8脚本执行原理 83
5.3 V8垃圾收集原理 87
【第2部分 工程】
第6章 使用Vite构建Electron项目 91
6.1 Vite为什么如此之快 91
6.2 大型Electron工程结构 92
6.3 定义启动脚本 93
6.4 启动开发服务 95
6.5 设置环境变量 96
6.6 构建主进程代码 98
6.7 启动Electron子进程 100
6.8 配置调试环境 102
6.9 打包源码 104
6.10 打包依赖 106
6.11 制成安装程序 108
6.12 引入TypeScript支持 111
第7章 使用webpack构建Electron项目 113
7.1 需求起源 113
7.2 准备环境 114
7.3 编译主进程代码 116
7.4 启动多入口页面调试服务 117
7.5 启动Electron子进程 120
7.6 制成安装包 121
7.7 注册应用内协议 123
第8章 使用Rollup构建Electron项目 125
8.1 Rollup与Svelte 125
8.2 准备开发环境 127
8.3 制成安装包 130
第9章 自动化测试 134
9.1 集成Spectron及Spectron原理 134
9.2 在Jest测试框架中使用Spectron 137
第10章 编译与调试Electron源码 141
10.1 build-tools构建工具介绍 141
10.2 手工构建Electron源码 142
10.3 构建不同版本的Electron 150
10.4 调试Electron源码 151
10.5 调试崩溃报告 156
第11章 应用分发 162
11.1 源码混淆 162
11.2 应用签名 165
11.3 静默安装与开机自启 168
11.4 自定义安装画面 170
11.5 软件防杀 173
第12章 逆向分析 174
12.1 用户安装目录 174
12.2 用户数据目录 175
12.3 注册表键值 177
12.4 自研逆向调试工具 178
第13章 其他工程要点 183
13.1 使用D8调试工具 183
13.2 内存消耗监控 185
13.3 子应用管控 189
【第3部分 实践】
第14章 跨进程消息总线 195
14.1 前端事件机制 195
14.2 Node.js的事件机制 197
14.3 Electron进程间通信 198
14.4 跨进程事件 200
14.5 使用Promise封装事件 203
14.6 基于HTML API的跨进程事件 205
14.7 跨进程通信带来的问题 207
第15章 窗口池 209
15.1 窗口渲染过慢 209
15.2 构建窗口池 210
15.3 构建窗口实例 212
15.4 通用的窗口标题栏 214
15.5 消费窗口池中的窗口 215
15.6 模拟模态窗口 216
第16章 原生模块 219
16.1 需求起源 219
16.2 原生模块开发方式 221
16.3 传统原生模块开发 223
16.4 使用Node-API开发原生模块 225
16.5 Node-API进阶 229
16.6 Electron环境下的原生模块 233
第17章 应用控制 236
17.1 应用单开 236
17.2 注册唤起协议 237
17.3 唤起外部应用 238
17.4 常规截图方案介绍 239
17.5 使用第三方截图库 241
第18章 Electron与Qt的整合 245
18.1 需求起源 245
18.2 命名管道服务端 247
18.3 命名管道客户端 250
18.4 通信协议 253
18.5 入口应用配置 256
18.6 应用退出的事件顺序 258
18.7 关闭窗口的问题 260
第19章 大数据渲染 262
19.1 常规无限滚动方案介绍 262
19.2 DOM结构与样式 265
19.3 模拟滚动条 267
19.4 处理滚动事件 268
19.5 滚动条的显隐动效 270
19.6 内置的数据持久化能力 271
第20章 点对点通信 274
20.1 WebRTC原理 274
20.2 构建WebRTC服务器 275
20.3 发送超大文件 276
20.4 接收超大文件 280
第21章 加密信息提取 283
21.1 需求起源 283
21.2 分析调试源码 284
21.3 暴露解密方法 286
21.4 转发请求 287
21.5 注入脚本 288
21.6 监控cookie 289
第22章 其他实践指导 292
22.1 分析首屏加载时间 292
22.2 模拟弱网环境 294
22.3 数据存储方案性能对比 296
22.4 加载本地图片 302
22.5 桌面端编程的生态演化 302
22.6 Electron的竞争对手 304
第1章 Electron包原理解析 3
1.1 安装失败 3
1.2 npm钩子 4
1.3 镜像策略 6
1.4 缓存策略 9
1.5 注入命令 11
1.6 共享环境变量 13
1.7 合适的版本 15
第2章 Electron原理解析 17
2.1 Chromium原理 17
2.2 Node.js原理 20
2.3 源码结构 23
2.4 主进程Node.js环境 25
2.5 公开API 27
2.6 不同进程不同的API 31
2.7 加载应用入口脚本 32
2.8 提供系统底层支持 34
2.9 解析asar文件 37
2.10 渲染进程Node.js环境 41
2.11 支持不同的操作系统 42
2.12 进程间通信 45
2.13 页面事件 48
第3章 electron-builder原理解析 52
3.1 使用方法 52
3.2 原理介绍 53
3.3 伪交叉编译 57
3.4 辅助工具app-builder 59
3.5 为生产环境安装依赖 61
3.6 生成asar 62
3.7 修改可执行程序 63
3.8 NSIS介绍 66
3.9 生成安装包 68
第4章 electron-updater原理解析 71
4.1 使用方法 71
4.2 如何校验新版本的安装包 73
4.3 Windows应用升级原理 75
4.4 Mac应用升级原理 78
第5章 其他重要原理 80
5.1 缓存策略与控制 80
5.2 V8脚本执行原理 83
5.3 V8垃圾收集原理 87
【第2部分 工程】
第6章 使用Vite构建Electron项目 91
6.1 Vite为什么如此之快 91
6.2 大型Electron工程结构 92
6.3 定义启动脚本 93
6.4 启动开发服务 95
6.5 设置环境变量 96
6.6 构建主进程代码 98
6.7 启动Electron子进程 100
6.8 配置调试环境 102
6.9 打包源码 104
6.10 打包依赖 106
6.11 制成安装程序 108
6.12 引入TypeScript支持 111
第7章 使用webpack构建Electron项目 113
7.1 需求起源 113
7.2 准备环境 114
7.3 编译主进程代码 116
7.4 启动多入口页面调试服务 117
7.5 启动Electron子进程 120
7.6 制成安装包 121
7.7 注册应用内协议 123
第8章 使用Rollup构建Electron项目 125
8.1 Rollup与Svelte 125
8.2 准备开发环境 127
8.3 制成安装包 130
第9章 自动化测试 134
9.1 集成Spectron及Spectron原理 134
9.2 在Jest测试框架中使用Spectron 137
第10章 编译与调试Electron源码 141
10.1 build-tools构建工具介绍 141
10.2 手工构建Electron源码 142
10.3 构建不同版本的Electron 150
10.4 调试Electron源码 151
10.5 调试崩溃报告 156
第11章 应用分发 162
11.1 源码混淆 162
11.2 应用签名 165
11.3 静默安装与开机自启 168
11.4 自定义安装画面 170
11.5 软件防杀 173
第12章 逆向分析 174
12.1 用户安装目录 174
12.2 用户数据目录 175
12.3 注册表键值 177
12.4 自研逆向调试工具 178
第13章 其他工程要点 183
13.1 使用D8调试工具 183
13.2 内存消耗监控 185
13.3 子应用管控 189
【第3部分 实践】
第14章 跨进程消息总线 195
14.1 前端事件机制 195
14.2 Node.js的事件机制 197
14.3 Electron进程间通信 198
14.4 跨进程事件 200
14.5 使用Promise封装事件 203
14.6 基于HTML API的跨进程事件 205
14.7 跨进程通信带来的问题 207
第15章 窗口池 209
15.1 窗口渲染过慢 209
15.2 构建窗口池 210
15.3 构建窗口实例 212
15.4 通用的窗口标题栏 214
15.5 消费窗口池中的窗口 215
15.6 模拟模态窗口 216
第16章 原生模块 219
16.1 需求起源 219
16.2 原生模块开发方式 221
16.3 传统原生模块开发 223
16.4 使用Node-API开发原生模块 225
16.5 Node-API进阶 229
16.6 Electron环境下的原生模块 233
第17章 应用控制 236
17.1 应用单开 236
17.2 注册唤起协议 237
17.3 唤起外部应用 238
17.4 常规截图方案介绍 239
17.5 使用第三方截图库 241
第18章 Electron与Qt的整合 245
18.1 需求起源 245
18.2 命名管道服务端 247
18.3 命名管道客户端 250
18.4 通信协议 253
18.5 入口应用配置 256
18.6 应用退出的事件顺序 258
18.7 关闭窗口的问题 260
第19章 大数据渲染 262
19.1 常规无限滚动方案介绍 262
19.2 DOM结构与样式 265
19.3 模拟滚动条 267
19.4 处理滚动事件 268
19.5 滚动条的显隐动效 270
19.6 内置的数据持久化能力 271
第20章 点对点通信 274
20.1 WebRTC原理 274
20.2 构建WebRTC服务器 275
20.3 发送超大文件 276
20.4 接收超大文件 280
第21章 加密信息提取 283
21.1 需求起源 283
21.2 分析调试源码 284
21.3 暴露解密方法 286
21.4 转发请求 287
21.5 注入脚本 288
21.6 监控cookie 289
第22章 其他实践指导 292
22.1 分析首屏加载时间 292
22.2 模拟弱网环境 294
22.3 数据存储方案性能对比 296
22.4 加载本地图片 302
22.5 桌面端编程的生态演化 302
22.6 Electron的竞争对手 304
猜您喜欢