Electron是什么以及可以做什么

新用户购买《Electron + Vue 3 桌面应用开发》,加小册专属微信群,参与群抽奖,送《深入浅出Electron》、《Electron实战》作者签名版 。
  • 1等奖:《深入浅出Electron》+《Electron实战》
  • 2等奖:《深入浅出Electron》
  • 3等奖:《Electron实战》
抽奖活动是掘金组织的,仅限近几日加入微信群的新成员(目前人还不多),我负责抽奖、邮寄,11月20日开始抽奖 。凡参与抽奖的读者都有机会中奖 。
经济学中的“有需求就有市场”,在技术领域也不例外,Electron 是应需求而生的,Electron 面世之后,非但满足了现有大部分的开发需求,还创造了大量的新需求,开辟了一个新的生态 。
本章我们从 Electron 的由来讲起,讲到需求从何而来,它是如何满足这些需求的 。
Electron 的由来如果想开发一个桌面 GUI 应用软件,希望其能同时在 Windows、Linux 和 Mac 平台上运行,可选的技术框架并不多,在早期人们主要用 wxWidgets、GTK或 Qt来做这类工作 。
这类框架大都是以 C/C++语言开发,受语言开发效率的限制,开发者想通过它们快速的完成桌面应用的开发工作十分困难 。近几年相继出现了现代编程语言针对这些框架的绑定库,诸如 Python、C#、Go 等,大部分都是开源社区提供的,但由于历史原因,要想用到这些框架的全部特性,还是需要编写 C/C++代码 。并且高质量的 Node.js 的绑定库几乎没有,前端程序员想通过这类框架开发桌面应用更是难上加难 。
Stack Overflow 的联合创始人 Jeff Atwood 曾经说过,凡能用 JavaScript 实现的,注定会被用 JavaScript 实现 。桌面 GUI 应用也不例外,近几年两个重量级框架 NW.js和 Electron横空出世,给前端开发人员打开了这个领域的大门 。
这两个框架都与中国人有极深的渊源,2011 年左右,中国英特尔开源技术中心的王文睿(Roger Wang)希望能用 Node.js 来操作 WebKit,而创建了 node-webkit 项目,这就是 NW.js 的前身 。英特尔公司大力支持了这个项目,不但允许王文睿分出一部分精力来做这个开源项目,还给了他招聘名额,允许他招聘其他工程师来一起完成这个项目 。2012 年,故事的另一个主角赵成(Cheng Zhao)加入到王文睿的小组,并对 node-webkit 项目做出了大量的改进 。后来赵成离开了英特尔,帮助 github 团队尝试把 node-webkit 应用到 Atom 编辑器上,但由于当时 node-webkit 还并不稳定,且 node-webkit 项目的走向也不再受赵成的控制了,这个尝试最终以失败告终 。但赵成和 github 团队并没有放弃,而是着手开发另一个类似 node-webkit 的项目:Atom Shell,这个项目就是 Electron 的前身,赵成在这个项目上倾注了大量的心血,这也是这个项目后来广受欢迎的关键因素之一,再后来 github 把这个项目开源出来,最终更名为 Electron 。
Electron 的价值Electron 和 NW.js 框架都是基于 Chromium 和 Node.js 实现的,这就使得前端程序员可以使用 JavaScript、HTML 和 CSS 知识轻松构建跨平台的桌面应用 。
传统桌面应用开发的难点,现在看来也变得异常容易,比如绘制漂亮的界面可以使用更灵活的 HTML 和 CSS 提供的能力、实现简单的动效可以用 CSS Animations 或 Web Animations API 来实现 。
为了弥补 Node.js 和前端技术访问系统 API 方面的不足,这两个框架内部都对系统 API 做了封装,比如:系统对话框、系统托盘、系统菜单、剪切板等 。开发者基于 Electron 开发应用时,可以直接使用 JavaScript 访问这些 API 。其他诸如网络访问控制、本地文件系统的访问控制则由 Node.js 提供支持 。这样开发者就可以使用前端技术开发绝大多数桌面应用的需求了 。

经验总结扩展阅读