Electron实战:入门、进阶与性能优化pdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:Electron实战:入门、进阶与性能优化pdf/doc/txt格式电子书下载
推荐语:
作者:刘晓伦著
出版社:机械工业出版社
出版时间:2020-05-01
书籍编号:30612988
ISBN:9787111653745
正文语种:中文
字数:220855
版次:1
所属分类:计算机-理论教程
Electron实战:入门、进阶与性能优化
刘晓伦 著
ISBN:978-7-111-65374-5
。
版权所有,侵权必究
客服热线:+ 86-10-68995265
客服信箱:service@bbbvip.com
官方网址:www.hzmedia.com.cn
新浪微博 @华章数媒
微信公众号 华章电子书(微信号:hzebook)
推荐序
早些年的时候,人们往往认为Web软件和桌面软件是两个截然不同的技术领域,应用于不同的场景。而现在,人们越来越多得去尝试将这两种技术结合,发挥它们的优势,快速构建性能好、交互友好的跨平台软件。本书作者多年研究如何将Web技术应用到桌面软件,有着多年的实战经验,在该领域内经验丰富。本书系统全面地介绍了开发Electron桌面应用所需要的知识点,由浅入深带你走进Electron的世界,其中有不少作者实战过程中总结出来的难点解决方案和最佳实践,让你轻松避开一些“坑”。无论你是想简单了解,还是想深入学习研究,或是在实际商业项目中用作参考,都强烈推荐!
——裘逑 菜鸟国际技术部技术专家
近年来前端技术发展迅猛,其触角已延伸到桌面软件开发领域,Electron就是这个领域首屈一指的开源项目,有很多优秀的桌面软件都是基于Electron开发的。Electron开发灵活度高,涉及知识繁多,导致很多初学者面临着入门容易进阶难的问题。作者结合多年的一线实战经验,围绕着桌面应用开发这个大课题,将丰富的实践知识集结成此书。晓伦同时也是码云推荐项目的作者,希望读者读完本书后也能在码云上开源自己的项目,为中国开源事业添砖加瓦。
——红薯 开源中国和码云创始人&CTO
Electron在把前端开发技术引入到桌面开发领域中的同时,还使这两个领域的技术碰撞出了很多火花,比如为网站注入脚本、截获并修改请求、访问受限的资源等,这些能力使它受到了很多极客开发者的青睐。阅读本书你不仅能学到Electron开发桌面应用的基础知识,还能学到很多极客知识。即使你没打算开发传统的桌面应用,这本书也不容错过。
——肖佳 VMware技术专家、《HTTP抓包实战》作者
使用Electron在PC端开发跨平台桌面应用非常流行,但国内缺少相关书。作者在Electron领域深耕多年,用Electron开发过多款产品,在开发过程中作者踩过很多“坑”。他把这些经历提炼总结,撰成此书。本书中有大量的实战内容,并且兼顾了知识的深度和广度,对于想在Electron领域发展的人很有帮助。
——李根 前高德地图资深开发工程师
作为目前热度很高的桌面开发工具,Electron已经在很多场景中使用,阿里企业级基础办公平台产品桌面端就基于Electron技术开发。作者通过沉淀多年的实战案例,手把手教大家走进Electron的世界。通过本书可以快速学习Electron技术栈,开发出自己的应用。
——周宜勤 阿里企业智能事业部高级工程师
作者像一位颇有耐心的老师傅,把开发实战中关键的HTML、CSS、JS、HTTP、Electron知识由浅入深地梳理给大家,让初级Web前端工程师也能跟着一步步完成一个应用的开发,同时又不浮于表面,指明了后期改进的方向与机理。对于希望学习并深度理解Electron开发的同学来说,这显然是一本干货满满的手边书。
——水歌 WebCell框架作者、freeCodeCamp成都社区负责人
Web发展日新月异,浏览器端的技术也在这几年发生了巨大的变革,数据驱动、组件化、工程化等一系列手段使得在Web端构建一个复杂应用不再成为问题。如今,这些前端技术的成功经验也将被用来满足桌面应用领域的需求,跨平台优势和背后庞大的开源资源让开发者有了更多的选择空间,Electron正是从一系列方案中脱颖而出的佼佼者。本书为想学习和使用这项技术的开发者们提供了丰富且成体系的学习参考,更可贵的是,作者设身处地地站在开发者的角度,为大家提供了一条平滑的学习曲线,引导读者逐步掌握书中的技术,并结合了完整的范例供读者实战。作者同时也对当下Electron中存在的问题进行了剖析和思考,相信入门Electron的读者会在书中找到自己的答案。
——崔西航 美团点评研发工程师
控制技术栈的复杂度,一直以来都是许多开发者和项目管理人员的追求。Electron为我们提供了一种舒适且优雅的方案,您只需要使用熟悉的开发工具、熟悉的Web开发语言和框架,就可以轻松开发桌面应用。本书基于作者长时间实践的积累,非常系统地介绍了Electron的现状、入门知识以及深度开发的各种技巧,同时穿插了各类解决方案的优劣对比,是一本非常实用的好书!
——苏震巍 盛派网络创始人、微软MVP、《微信开发深度解析》作者
前言
我为什么要撰写本书
我在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无关的代码。
那些一看就会、一看就懂的Electron知识我没有过多讲解,但诸如如何在Electron中读取访问受限的Cookie、如何保护客户数据等知识,本书都是用一线案例讲解的。
本书并不试图面面俱到地讲解Electron的所有内容,而是只讲解项目一线实战中会涉及的重要内容,比如脚本注入、无边框窗口等。被官网或社区标记为已过时的接口和插件本书不会讲解。在选择第三方社区插件时,我尽量选择了更新较频繁、使用用户较多的来使用。
3.本书有足够的知识广度和知识深度
本书并不是一本专门讲解Electron的书,除Electron相关知识外,还介绍了大量的JavaScript、HTML、CSS、Node.js、桌面软件开发、多进程控制、安全、社区资源及背景故事等知识。Electron是本书的主线,每章知识全部是为Electron服务的,所以说本书的知识有广度。
本书的知识也有深度。举个例子,初学者可能苦于渲染进程与主进程通信的难度而大量使用remote技术。但初学者不知道的是,remote技术使用不当可能导致某些关键环节有百倍千倍的性能差异,甚至会导致不易排查的错误和安全问题的出现。这些问题背后的原理是怎样的呢?类似这样有深度的知识,在本书中有很多。
如何阅读本书
如果把所有技术书的学习难度系数从低到高设为1~10,那么本书难度系数应该在7左右。书中涉及从桌面软件开发到前端网页开发的知识,知识点非常多,虽然不涉及Electron的源码,但对关键点的运行原理都做了介绍。
本书力图每一章讲一个方面的知识,每一小节讲一个知识点,每一小节尽量不安排太多内容,让读者能更轻松地获取知识,以提升阅读体验。
如果几个小节的知识间有关联,我会尽量把基础的、工具类的知识安排在前面。比如,我会讲完主进程与渲染进程之后,马上讲如何引入现代前端框架,因为后面的知识需要用到现代前端框架。
至于广为人知的HTML5、CSS3和ES6,本书不会展开讲解。而一些JavaScript的知识是在ES6之后才被加入标准的,但由于ES6的巨大变革,业内普遍把ES6及以后加入的知识统称为ES6,本书也遵循这一共识。
书中带边框的区域,放置重点内容或扩展阅读的内容,重点内容前面会标记“重点”二字,扩展阅读内容前面会标记“扩展”二字,比如:
重点 此处为需要重点注意的内容。
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询