作者 |
刘晓伦 等 |
丛书名 |
Web开发技术丛书 |
出版社 |
机械工业出版社 |
ISBN |
9782112151812 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8084957 - 深入浅出Electron:原理、工程与实践--------------------------- 内容简介 这是一本能帮助读者夯实Electron基础进而开发出稳定、健壮的Electron应用的著作。 书中对Electron的工作原理、大型工程构建、常见技术方案、周边生态工具等进行了细致、深入地讲解。 工作原理维度: 对Electron及其周边工具的原理进行了深入讲解,包括Electron依赖包的原理、Electron原理、electron-builder的原理等。 工程构建维度: 讲解了如何驾驭和构建一个大型Electron工程,包括使用各种现代前端构建工具构建Electron工程、自动化测试、编译和调试Electron源码等。 技术方案维度: 总结了实践过程中遇到的一些技术难题以及应对这些难题的技术方案,包括跨进程消息总线、窗口池、大数据渲染、点对点通信等。 周边工具维度: 作者根据自己的“踩坑”经验和教训,有针对性地讲解了大量Electron的周边工具、库和技术,涉及Qt开发框架、C++语言、Node.js框架甚至Vite构建工具等,帮助读者拓宽技术广度,掌握开发Electron应用需要的全栈技术。 ---------------------------8069504 - Electron实战:入门、进阶与性能优化--------------------------- . 内容简介 本书以实战为导向,讲解了如何用Electron结合现代前端技术来开发桌面应用。不仅全面介绍了Electron入门需要掌握的功能和原理,而且还针对Electron开发中的重点和难点进行了重点讲解,旨在帮助读者实现快速进阶。作者是Electron领域的早期实践者,项目经验非常丰富,本书内容得到了来自阿里等大企业的一线专家的高度评价。 本书遵循渐进式的原则逐步传递知识给读者,书中以Electron知识为主线并对现代前端知识进行了有序的整合,对易发问题从深层原理的角度进行讲解,对普适需求以最佳实践的方式进行讲解,同时还介绍了Electron生态内的大量优秀组件和项目。 全书一共14章: 第1章讲解Electron因何而来,Electron的生态、优势和不足,以及Electron未来的竞争者PWA技术; 第2章带领读者新建了一个简单的Electron项目,同时为读者介绍了一些Electron的基础知识; 第3章讲解了主进程和渲染进程的相关内容; 第4章介绍了如何把现代前端框架引入Electron项目中,集中介绍了webpack、Angular、React和Vue等框架; 第5~3章依次详细讲解了界面、数据持久化、操作系统API访问、硬件设备访问、测试、调试、安全、发布等技术及其背后的原理 第14章通过一个完整的工程项目串联了Electron的核心技术并展示了Electron项目开发的完整流程。 |
目录 |
[套装书具体书目] 8069504 - Electron实战:入门、进阶与性能优化 - 9787111653745 - 机械工业出版社 - 定价 79 8084957 - 深入浅出Electron:原理、工程与实践 - 9787111696094 - 机械工业出版社 - 定价 99 ---------------------------8084957 - 深入浅出Electron:原理、工程与实践--------------------------- 前言 第一部分 原理 第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 第二部分 工程 第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 第三部分 实践 第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 ---------------------------8069504 - Electron实战:入门、进阶与性能优化--------------------------- 推荐序 前 言 第1章 认识Electron 1 1.1 Electron的由来 1 1.2 基于Electron的应用 4 1.3 Electron的生态 5 1.4 Electron的优势 5 1.5 Electron的不足 6 1.6 未来的竞争者PWA 7 1.7 本章小结 9 第2章 轻松入门 10 2.1 搭建开发环境 10 2.2 创建窗口界面 13 2.3 启动窗口 14 2.4 引用JavaScript 16 2.5 Electron API演示工具 19 2.6 试验工具Electron Fiddle 20 2.7 本章小结 22 第3章 主进程和渲染进程 23 3.1 区分主进程与渲染进程 23 3.2 进程调试 25 3.2.1 调试主进程 25 3.2.2 调试渲染进程 27 3.3 进程互访 29 3.3.1 渲染进程访问主进程对象 29 3.3.2 渲染进程访问主进程类型 30 3.3.3 渲染进程访问主进程自定义内容 31 3.3.4 主进程访问渲染进程对象 32 3.4 进程间消息传递 32 3.4.1 渲染进程向主进程发送消息 32 3.4.2 主进程向渲染进程发送消息 34 3.4.3 渲染进程之间消息传递 36 3.5 remote模块的局限性 36 3.6 本章小结 38 第4章 引入现代前端框架 39 4.1 引入webpack 39 4.1.1 认识webpack 39 4.1.2 配置webpack 40 4.1.3 主进程入口程序 42 4.1.4 渲染进程入口程序 43 4.1.5 自定义入口页面 45 4.1.6 使用jQuery 46 4.2 引入Angular 46 4.2.1 认识Angular 46 4.2.2 环境搭建 47 4.2.3 项目结构 48 4.3 引入React 48 4.3.1 认识React 48 4.3.2 环境搭建 49 4.3.3 项目结构 50 4.3.4 项目引荐 50 4.4 引入Vue 50 4.4.1 认识Vue 50 4.4.2 环境搭建 51 4.4.3 项目结构 52 4.4.4 调试配置 53 4.5 本章小结 55 第5章 窗口 56 5.1 窗口的常用属性及应用场景 56 5.2 窗口标题栏和边框 58 5.2.1 自定义窗口的标题栏 58 5.2.2 窗口的控制按钮 62 5.2.3 窗口最大化状态控制 63 5.2.4 防抖与限流 65 5.2.5 记录与恢复窗口状态 67 5.2.6 适时地显示窗口 68 5.3 不规则窗口 69 5.3.1 创建不规则窗口 69 5.3.2 点击穿透透明区域 71 5.4 窗口控制 72 5.4.1 阻止窗口关闭 72 5.4.2 多窗口竞争资源 74 5.4.3 模态窗口与父子窗口 75 5.4.4 Mac系统下的关注点 76 5.5 本章小结 78 第6章 界面 79 6.1 页面内容 79 6.1.1 获取webContents实例 79 6.1.2 页面加载事件及触发顺序 81 6.1.3 页面跳转事件 82 6.1.4 单页应用中的页内跳转 83 6.1.5 页面缩放 84 6.1.6 渲染海量数据元素 85 6.2 页面容器 88 6.2.1 webFrame 88 6.2.2 webview 90 6.2.3 BrowserView 91 6.3 脚本注入 93 6.3.1 通过preload参数注入脚本 93 6.3.2 通过executeJavaScript注入脚本 97 6.3.3 禁用窗口的beforeunload事件 99 6.4 页面动效 100 6.4.1 使用CSS控制动画 100 6.4.2 使用JavaScript控制动画 101 6.5 本章小结 102 第7章 数据 103 7.1 使用本地文件持久化数据 103 7.1.1 用户数据 103 7.1.2 读写本地文件 105 7.1.3 值得推荐的第三方库 106 7.2 使用浏览器技术持久化数据 107 7.2.1 浏览器数据存储技术对比 107 7.2.2 使用第三方库访问IndexedDB 108 7.2.3 读写受限访问的Cookie 110 7.2.4 清空浏览器缓存 112 7.3 使用SQLite持久化数据 112 7.4 本章小结 115 第8章 系统 116 8.1 系统对话框 116 8.1.1 使用系统文件对话框 116 8.1.2 关于对话框 118 8.2 菜单 119 8.2.1 窗口菜单 119 8.2.2 HTML右键菜单 121 8.2.3 系统右键菜单 124 8.2.4 自定义系统右键菜单 125 8.3 快捷键 126 8.3.1 监听网页按键事件 126 8.3.2 监听全局按键事件 126 8.4 托盘图标 127 8.4.1 托盘图标闪烁 127 8.4.2 托盘图标菜单 128 8.5 剪切板 129 8.5.1 把图片写入剪切板 129 8.5.2 读取并显示剪切板里的图片 130 8.6 系统通知 131 8.6.1 使用HTML API发送系统通知 131 8.6.2 主进程内发送系统通知 132 8.7 其他 133 8.7.1 使用系统默认应用打开文件 133 8.7.2 接收拖拽到窗口中的文件 134 8.7.3 使用系统字体 135 8.7.4 最近打开的文件 137 8.8 本章小结 138 第9章 通信 139 9.1 与Web服务器通信 139 9.1.1 禁用同源策略以实现跨域 139 9.1.2 Node.js访问HTTP服务的不足 141 9.1.3 使用WebSocket通信 142 9.1.4 截获并修改网络请求 144 9.2 与系统内其他应用通信 146 9.2.1 Electron应用与其他应用通信 146 9.2.2 网页与Electron应用通信 148 9.3 自定义协议(protocol) 150 9.4 使用socks5代理 152 9.5 本章小结 153 第10章 硬件 154 10.1 屏幕 154 10.1.1 获取扩展屏幕 154 10.1.2 在自助服务机中使用Electron 156 10.2 音视频设备 158 10.2.1 使用摄像头和麦克风 158 10.2.2 录屏 159 10.3 电源 160 10.3.1 电源的基本状态和事件 160 10.3.2 监控系统挂起与锁屏事件 161 10.3.3 阻止系统锁屏 162 10.4 打印机 162 10.4.1 控制打印行为 162 10.4.2 导出PDF 164 10.5 硬件信息 165 10.5.1 获取目标平台硬件信息 165 10.5.2 使用硬件串号控制应用分发 166 10.6 本章小结 170 第11章 调测 171 11.1 测试 171 11.1.1 单元测试 171 11.1.2 界面测试 174 11.2 调试 177 11.2.1 渲染进程性能问题追踪 177 11.2.2 自动追踪性能问题 180 11.2.3 性能优化技巧 182 11.2.4 开发环境调试工具 185 11.2.5 生产环境调试工具 186 11.3 日志 188 11.3.1 业务日志 188 11.3.2 网络日志 189 11.3.3 崩溃报告 190 11.4 本章小结 193 第12章 安全 194 12.1 保护源码 195 12.1.1 立即执行函数 195 12.1.2 禁用开发者调试工具 196 12.1.3 源码压缩与混淆 198 12.1.4 使用asar保护源码 201 12.1.5 使用V8字节码保护源码 202 12.2 保护客户 204 12.2.1 禁用Node.js集成 204 12.2.2 启用同源策略 204 12.2.3 启用沙箱隔离 205 12.2.4 禁用webview标签 205 12.3 保护网络 206 12.3.1 屏蔽虚假证书 206 12.3.2 关于防盗链 209 12.4 保护数据 211 12.4.1 使用Node.js加密解密数据 211 12.4.2 保护lowdb数据 213 12.4.3 保护electron-store数据 213 12.4.4 保护用户界面 214 12.5 提升稳定性 214 12.5.1 捕获全局异常 214 12.5.2 从异常中恢复 215 12.6 本章小结 216 第13章 发布 218 13.1 生成图标 218 13.2 生成安装包 219 13.3 代码签名 221 13.4 自动升级 222 13.5 本章小结 224 第14章 实战:自媒体内容发布工具 225 14.1 项目需求 225 14.2 项目架构 226 14.2.1 数据架构 226 14.2.2 技术架构 228 14.3 核心剖析 229 14.3.1 创建窗口并注入代码 229 14.3.2 开始同步文章数据 230 14.3.3 检查是否登录 232 14.3.4 上传文章图片 233 14.3.5 设置文章标题 235 14.3.6 设置文章正文 236 14.3.7 其他工作 236 14.4 辅助功能 237 14.4.1 图片缩放 237 14.4.2 用户身份验证 239 14.5 本章小结 240 附录A Mac代码签名 242 结语 256 |