作品简介

本书能帮助读者夯实Electron基础进而开发出稳定、健壮的Electron应用的著作。

书中对Electron的工作原理、大型工程构建、常见技术方案、周边生态工具等进行了细致、深入地讲解。

工作原理维度:

对Electron及其周边工具的原理进行了深入讲解,包括Electron依赖包的原理、Electron原理、electron-builder的原理等。

工程构建维度:

讲解了如何驾驭和构建一个大型Electron工程,包括使用各种现代前端构建工具构建Electron工程、自动化测试、编译和调试Electron源码等。

技术方案维度:

总结了实践过程中遇到的一些技术难题以及应对这些难题的技术方案,包括跨进程消息总线、窗口池、大数据渲染、点对点通信等。

周边工具维度:

作者根据自己的“踩坑”经验和教训,有针对性地讲解了大量Electron的周边工具、库和技术,涉及Qt开发框架、C++语言、Node.js框架甚至Vite构建工具等,帮助读者拓宽技术广度,掌握开发Electron应用需要的全栈技术。

刘晓伦,资深技术专家,有10余年研发经验,是Electron及其相关技术在企业应用领域的早期实践者,作者还为Electron项目提交过数个Issue和Pull Request均被官方接纳。

原远传研发中心负责人、小远机器人研发总监。现在担任一家创业公司的技术负责人,负责的产品以Electron为主要技术方向。

除此之外,作者还有着十余年的前端及C++(Qt)的开发经验,深入研究过Chromium的源码及相关的协议(DevTools Protocol和V8 Debugger Protocol),其主导研发的产品为数家世界五百强企业提供服务。

作品目录

  • 内容简介
  • 推荐语
  • 前言
  • 第一部分 原理
  • 第1章 Electron包原理解析
  • 1.1 安装失败
  • 1.2 npm钩子
  • 1.3 镜像策略
  • 1.4 缓存策略
  • 1.5 注入命令
  • 1.6 共享环境变量
  • 1.7 合适的版本
  • 第2章 Electron原理解析
  • 2.1 Chromium原理
  • 2.2 Node.js原理
  • 2.3 源码结构
  • 2.4 主进程Node.js环境
  • 2.5 公开API
  • 2.6 不同进程不同的API
  • 2.7 加载应用入口脚本
  • 2.8 提供系统底层支持
  • 2.9 解析asar文件
  • 2.10 渲染进程Node.js环境
  • 2.11 支持不同的操作系统
  • 2.12 进程间通信
  • 2.13 页面事件
  • 第3章 electron-builder原理解析
  • 3.1 使用方法
  • 3.2 原理介绍
  • 3.3 伪交叉编译
  • 3.4 辅助工具app-builder
  • 3.5 为生产环境安装依赖
  • 3.6 生成asar
  • 3.7 修改可执行程序
  • 3.8 NSIS介绍
  • 3.9 生成安装包
  • 第4章 electron-updater原理解析
  • 4.1 使用方法
  • 4.2 如何校验新版本的安装包
  • 4.3 Windows应用升级原理
  • 4.4 Mac应用升级原理
  • 第5章 其他重要原理
  • 5.1 缓存策略与控制
  • 5.2 V8脚本执行原理
  • 5.3 V8垃圾收集原理
  • 第二部分 工程
  • 第6章 使用Vite构建Electron项目
  • 6.1 Vite为什么如此之快
  • 6.2 大型Electron工程结构
  • 6.3  定义启动脚本
  • 6.4 启动开发服务
  • 6.5 设置环境变量
  • 6.6 构建主进程代码
  • 6.7 启动Electron子进程
  • 6.8 配置调试环境
  • 6.9 打包源码
  • 6.10 打包依赖
  • 6.11 制成安装程序
  • 6.12 引入TypeScript支持
  • 第7章 使用webpack构建Electron项目
  • 7.1 需求起源
  • 7.2 准备环境
  • 7.3 编译主进程代码
  • 7.4 启动多入口页面调试服务
  • 7.5 启动Electron子进程
  • 7.6 制成安装包
  • 7.7 注册应用内协议
  • 第8章 使用Rollup构建Electron项目
  • 8.1 Rollup与Svelte
  • 8.2 准备开发环境
  • 8.3 制成安装包
  • 第9章 自动化测试
  • 9.1 集成Spectron及Spectron原理
  • 9.2 在Jest测试框架中使用Spectron
  • 第10章 编译与调试Electron源码
  • 10.1 build-tools构建工具介绍
  • 10.2 手工构建Electron源码
  • 10.3 构建不同版本的Electron
  • 10.4 调试Electron源码
  • 10.5 调试崩溃报告
  • 第11章 应用分发
  • 11.1 源码混淆
  • 11.2 应用签名
  • 11.3 静默安装与开机自启
  • 11.4 自定义安装画面
  • 11.5 软件防杀
  • 第12章 逆向分析
  • 12.1 用户安装目录
  • 12.2 用户数据目录
  • 12.3 注册表键值
  • 12.4 自研逆向调试工具
  • 第13章 其他工程要点
  • 13.1 使用D8调试工具
  • 13.2 内存消耗监控
  • 13.3 子应用管控
  • 第三部分 实践
  • 第14章 跨进程消息总线
  • 14.1 前端事件机制
  • 14.2 Node.js的事件机制
  • 14.3 Electron进程间通信
  • 14.4 跨进程事件
  • 14.5 使用Promise封装事件
  • 14.6 基于HTML API的跨进程事件
  • 14.7 跨进程通信带来的问题
  • 第15章 窗口池
  • 15.1 窗口渲染过慢
  • 15.2 构建窗口池
  • 15.3 构建窗口实例
  • 15.4 通用的窗口标题栏
  • 15.5 消费窗口池中的窗口
  • 15.6 模拟模态窗口
  • 第16章 原生模块
  • 16.1 需求起源
  • 16.2 原生模块开发方式
  • 16.3 传统原生模块开发
  • 16.4 使用Node-API开发原生模块
  • 16.5 Node-API进阶
  • 16.6 Electron环境下的原生模块
  • 第17章 应用控制
  • 17.1 应用单开
  • 17.2 注册唤起协议
  • 17.3 唤起外部应用
  • 17.4 常规截图方案介绍
  • 17.5 使用第三方截图库
  • 第18章 Electron与Qt的整合
  • 18.1 需求起源
  • 18.2 命名管道服务端
  • 18.3 命名管道客户端
  • 18.4 通信协议
  • 18.5 入口应用配置
  • 18.6 应用退出的事件顺序
  • 18.7 关闭窗口的问题
  • 第19章 大数据渲染
  • 19.1 常规无限滚动方案介绍
  • 19.2 DOM结构与样式
  • 19.3 模拟滚动条
  • 19.4 处理滚动事件
  • 19.5 滚动条的显隐动效
  • 19.6 内置的数据持久化能力
  • 第20章 点对点通信
  • 20.1 WebRTC原理
  • 20.2 构建WebRTC服务器
  • 20.3 发送超大文件
  • 20.4 接收超大文件
  • 第21章 加密信息提取
  • 21.1 需求起源
  • 21.2 分析调试源码
  • 21.3 暴露解密方法
  • 21.4 转发请求
  • 21.5 注入脚本
  • 21.6 监控cookie
  • 第22章 其他实践指导
  • 22.1 分析首屏加载时间
  • 22.2 模拟弱网环境
  • 22.3 数据存储方案性能对比
  • 22.4 加载本地图片
  • 22.5 桌面端编程的生态演化
  • 22.6 Electron的竞争对手
展开全部