(特价书)Electron实战:入门、进阶与性能优化
系统讲解Electron的技术栈和运行原理,结合一线项目需求和问题讲解Electron的重点和难点
基本信息

编辑推荐
作者是Electron的早期实践者,GitHub/Gitee优秀开源项目作者,本书获得阿里等企业的多位一线技术专家好评
系统讲解Electron的技术栈和运行原理,结合一线项目需求和问题讲解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项目开发的完整流程。
作译者
资深技术专家,有10余年研发经验,是Electron及其相关技术在企业应用领域的早期实践者,GitHub/Gitee优秀开源项目作者。作者还为Electron项目提交过数个Issue和Pull Request均被官方接纳。
原远传研发中心负责人、小远机器人研发总监。现在担任一家创业公司的技术负责人,负责的产品以Electron为主要技术方向。
除此之外,作者还有着十余年的前端及C++(Qt)的开发经验,深入研究过Chromium的源码及相关的协议(DevTools Protocol和V8 Debugger Protocol),其主导研发的产品为数家世界五百强企业提供服务。
目录
前 言
第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
前言
我在2015年上半年的时候开始关注NW.js和Electron,下半年开始在实际项目中应用NW.js,那个时候两个项目的发展势头同样迅猛,分不出孰优孰劣。后来Electron领域出了几个杀手级应用(Visual Studio Code、Slack等),开发团队和社区维护者越来越积极地维护此项目,很多开发者在做技术选型的时候就更倾向于使用Electron了。
我也不例外,在公司内部做的项目和我业余时间做的项目,只要涉及桌面GUI,我基本都会选择Electron。用Electron开发的应用非常稳定,运行效率可媲美原生C/C++应用,且社区资源丰富,即使是一些冷门的需求也能找到解决方案;Electron维护者非常专业、友善,开发者的Issue和Pull Request回复得也非常及时。
但开发者想进入这个领域并开发出一个成熟、稳定的商业应用并没有那么简单,这主要是以下几方面原因导致的。
官方文档片面:Electron使用JavaScript、HTML和CSS构建跨平台的桌面应用,但官方文档涉及的JavaScript、HTML和CSS相关的知识并不多,以介绍Electron自身的API为主,另一个重要成员—Node.js几乎未涉及。如何把这些知识与Electron的知识结合起来构建应用,成为开发者入门面临的第一个困难。
学习资料匮乏:目前国内图书市场中只有两本由国外引入的与Electron相关的书,其中一本花了一半的篇幅讲解NW.js。书中存在无关内容多、关键知识点及周边知识少、与国内开发者实际需求不符、存在过时内容等问题,不利于读者自学。另外,虽然Electron社区中有相关内容,但内容良莠不齐,不具备系统性学习的条件。这是新手面临的第二个困难。
Electron本身自由度太高,导致“坑多、坑深”:为了保证开发者的自由度和使用的便捷度,Electron提供了丰富的API,使开发者通过Electron可以轻松开发各领域五花八门的应用,但这也给开发者带来了诸多隐患,比如,API使用不当可能导致应用程序存在严重的安全问题(用户计算机控制权被窃取)和性能问题(百倍千倍的性能差异)。这是新手面临的第三个困难,而且可能是他们自己也还不知道的问题。
用对、用好Electron生态内的资源具有相当大的挑战:在Electron本身迅猛发展的同时,其社区生态也呈爆发式增长,兼之Electron可以复用Web和Node.js
生态内的组件,这使得开发者在组件选型时经常会犯错。比如,我就不推荐在Electron应用内使用jQuery、axios和electron-vue等组件。这是新手面临的第四个困难。
以上这些困难也曾使我备受困扰,为让广大开发者不再重走我的痛苦之路,我决定撰写本书。
本书主要内容及特色
1.本书大部分内容是官方文档中没有的
在书中我用大量篇幅介绍了ES6、HTML5和CSS3是如何与Electron结合的,比如动画效果、Web安全、HTML系统通知、WebSocket通信、音视频设备访问、CSS扩展语言等。
本书还用很大篇幅介绍了Node.js是如何与Electron结合的,比如:Node.js为何擅长处理IO密集型业务;Node.js是如何使用命名管道进行通信的;Node.js是如何完成加密、解密的(其中包括我为什么不推荐使用网上大量传播的加密、解密方法)。
本书用了一整章的篇幅介绍现代前端框架如何与Electron整合,其中包括Vue、React、Angular、webpack。
本书介绍了众多在Electron项目中常用的优秀第三方库,比如electron-builder(打包发布工具)、Debugtron(生产环境调试工具)、Dexie(IndexedDB封装库)、Jimp(图像处理库)等。
2.本书以更合理的方式组织内容
我在撰写本书时始终秉持以渐进的方式传递知识的理念。因此,我并没单独拿出几章内容枯燥地介绍ES6、HTML5和CSS3等相关知识,而是把这些知识分散到书中各个章节中,以Electron为主线,由浅入深地传递给读者。
我把分散在各个角落的知识点按应用场景组织在一起,比如kiosk本是Electron窗口类的一个API(用于自助服务机),print是webContents类的API(用于控制打印机),我把它们与HTML5访问媒体设备的知识、Electron电源控制的知识整合在一起放在“硬件”章节。类似的知识组合在本书中随处可见。此外对于其他很多官网没有介绍但对Electron应用很有价值的CSS、JavaScript知识,我都做了较合理的整理和编排。读者阅读本书时即能有所体会。
与实战类的图书不同,本书不会试图组织一些实际案例来从头到尾讲它们是如何实现的,而是把实际案例中涉及的问题、难点、易错点剥离出来,讲精讲透。本书最后一章安排了一个真实案例,但也只讲关键环节的内容,不会大量地粘贴与Electron无关的代码。
媒体评论
——裘逑 菜鸟国际技术部技术专家
作者结合多年的一线实战经验,围绕桌面应用开发这个大课题,将丰富的实践知识集结成此书。作者是码云推荐项目的作者,希望读者读完本书后也能在码云上开源自己的项目,为中国开源事业添砖加瓦。
——红薯 开源中国和码云创始人&CTO
阅读本书,你不仅能学到Electron开发桌面应用的基础知识,还能学到很多极客知识。
?——肖佳 ?VMware技术专家/《HTTP抓包实战》作者
使用Electron开发跨平台桌面应用非常流行,作者用Electron开发过多款产品,他把这些经历总结成此书。本书中有大量的实战内容,兼顾了知识的深度和广度,对于想在Electron领域发展的人很有帮助。
——李根 前高德地图资深开发工程师
Electron已经在很多场景中被广泛使用,阿里企业级基础办公平台产品桌面端是基于Electron技术开发的。通过本书可以快速学习Electron技术栈,开发出自己的应用。
——周宜勤 阿里企业智能事业部高级工程师
作者由浅入深地对Electron的知识进行了梳理,让初级Web前端工程师也能跟着一步步完成一个应用的开发,同时又不浮于表面,指明了后期改进的方向与机理。
——水歌 WebCell框架作者/freeCodeCamp成都社区负责人