大家好,我是Echa。
好消息,2023年4月4号 跨平台桌面应用开发工具 Electron 官方宣布 Electron 24.0.0 版本正式发布。距离上一个版本 Electron 23.0.0 版本(2023年2月7号),短短才56天时间。Electron 研发团队这研发速度惊人。一转眼 Electron 陪伴了大家十年了多时间,有兴趣可以看看小编之前发的 ntent="mp" data-source="innerlink" href="https://www.toutiao.com/article/7213010841720226338/" rel="noopener noreferrer noopener noreferrer" target="_blank">Electron 十年的发展史,记录了Electron 点点滴滴。作为一个跨平台桌面应用开发工具,发展到现在真心不容易。
这次 Electron 24.0.0 版本 包括了对 Chromium 112.0.5615.49、V8 11.2 和 Node.js 18.14.0 的升级和兼容。可以通过以下 npm 命令来安装该版本:
npm install electron@latest如下图:
今天小编带领大家详细了解 Electron 以及最新版更新内容。
全文大纲
- Electron 前身
- Electron 介绍
- Electron 的原理
- Electron 的价值
- Electron 部署搭建
- Electron 优缺点
- Electron 24.0.0 版本更新内容
Electron 前身
Electron 最初由赵成和 GitHub 的工程师于 2013 年4月创建,当时名字为 Atom Shell,用来服务于 GitHub 的开发工具 Atom,2014 年5月开源,2015 年4月才正式更名为 Electron。目前 GitHub 公司内部仍有一个团队在维护这个开源项目,且社区内也有很多的贡献者。
Electron 更新非常频繁,平均一到两周就会有新版本发布,Issue 和 Pull request 的回复也非常及时,一般关系到应用崩溃的问题(Crash Issue)一两天就能得到回复,普通问题一周内也会有人跟进。社区活跃程度由此可见一斑。
Electron 原作者 赵成
发起者是中国人
与 Electron 类似的另外一个框架是 NW.js,它们都是用 Web 前端技术来开发桌面 GUI 程序。
Electron VS NW.js
Electron 前身是atomshell,NW.js 前身是Node-Webkit。区别:
- 程序入口
NW.js 以网页为入口,Electron 以js 为入口,Electron 更加灵活。例如可以开发纯菜单应用。
- 编译系统
Electron 使用 libchromiumcontent,比NW.js 编译应用的时候,省去编译整个 Chromium (编译Chromium 非常费时)。
- Node 集成
NW.js 的 Node 集成需要给 Chromium 打补丁才能工作。Electron 通过集成 libuv loop 和 平台的 message loop 避免给 Chromium 打补丁。
- Multi-context
NW.js 创造了 Node context 和 web context 的概念,而 Electron 没有引入新的 context,而是直接使用 Node 的 Multi-context 特性(这一特性是 Atom 开发者赞助 Node 添加的)。
- Electron 不支持XP
这两个框架都与中国人有极深的渊源,2011 年左右,中国英特尔开源技术中心的王文睿(Roger Wang)希望能用 Node.js 来操作 WebKit,而创建了 node-webkit 项目,这就是 NW.js 的前身,但当时的目的并不是用来开发桌面 GUI 应用。
中国英特尔开源技术中心大力支持了这个项目,不仅允许王文睿分出一部分精力来做这个开源项目,还给了他招聘名额,允许他招聘其他工程师来一起完成
2012 年,故事的另一个主角赵成(Cheng Zhao)加入王文睿的小组,并对 node-webkit 项目做出了大量的改进。
后来赵成离开了中国英特尔开源技术中心,帮助 GitHub 团队尝试把 node-webkit 应用到 Atom 编辑器上,但由于当时 node-webkit 并不稳定,且 node-webkit 项目的走向也不受赵成的控制,这个尝试最终以失败告终。
但赵成和 GitHub 团队并没有放弃,而是着手开发另一个类似 node-webkit 的项目——Atom Shell,这个项目就是 Electron 的前身。赵成在这个项目上倾注了大量的心血,这也是这个项目后来广受欢迎的关键因素之一。再后来 GitHub 把这个项目开源出来,最终更名为 Electron。
你可能从没听说过这两个人的名字,但开源界就是有这么一批“英雄”,他们不为名利而来,甘做软件行业发展的铺路石,值得这个领域的所有从业者尊敬。
现如今赵成好像已经不再负责Electron项目的管理工作了。而是交棒给了一个小姐姐了,就是这张照片里的C位女孩儿:Shelley(codebytere)。
Electron 研发团队
这个女孩儿也厉害的很,在做Electron开发工作的同时,还是nodejs、tc39和openjs-foundation的成员。不过小编个人感觉她对待开发者,提的Issue和PR比较草率,没有赵成认真。
Electron 介绍
官网:https://www.electronjs.org/
Github:https://github.com/electron/electron
基于chrome 内核 + nodeJS 服务 + Html5 展现来开发的桌面软件,可以轻易的跨平台。例如Visual Studio Code、Slack 、Atom 等等桌面端软件都是使用Electron 开发的。
如下图:
桌面应用软件都是使用Electron 开发的
Chromium+Nodejs+Native apis=Electron
Chromium : 为Electron提供了强大的UI能力,可以不考虑兼容性的情况下,利用强大的Web生态来开发界面。electron本质上就是chromium(chrome开源版本)浏览器,最新的东西都会在chromium测试,所以electron可以体验最新的api,这也是好处之一)
Chromium 多进程架构图
如果想开发一个桌面 GUI 应用软件,希望其能同时在 Windows、Linux 和 Mac 平台上运行,可选的技术框架并不多,在早期人们主要使用以下三个框架来完成这类工作:
- wxWidgets:https://www.wxwidgets.org
- GTK:https://www.gtk.org
- Qt:https://www.qt.io
这三个框架都是用 C/C++ 语言开发的,受语言开发效率的限制,开发者想通过它们快速地完成桌面应用的开发工作十分困难。
近几年相继出现了针对这些框架的现代编程语言绑定库,诸如 Python、C#、Go 等,大部分都是开源社区提供的,但由于历史原因,要想用到这些框架的全部特性,还是需要编写 C/C++ 代码。并且由于几乎没有高质量的 Node.js 的绑定库,前端程序员想通过这三个框架开发桌面应用更是难上加难。
Stack Overflow 的联合创始人 Jeff Atwood 曾经说过,凡能用 Javascript 实现的,注定会被用 Javascript 实现。桌面 GUI 应用也不例外,近几年两个重量级框架 NW.js和 Electron横空出世,给前端开发人员打开了这个领域的大门。
electron 其实就是个壳子,一个可以展示网页内容的壳子,相当于一个独立的浏览器,而这个浏览器可以提供给你一些接口,去调用系统的资源。
一般在浏览器中网页是没有权限去调用系统资源的,本地文件都无法自主获取,只能通过用户操作喂给浏览器才行。
有了 electron 就自由了,可以调用 electron 提供的一些系统功能,所有 nodejs 中可以使用的功能都可以。
- 支持Chrome 111
- 支持DevTools 112
- 结束对 21.x.y 的支持
根据项目的支持政策,Electron 21.x.y 已终止支持。鼓励开发人员和应用程序升级到更新版本的 Electron。
最后
一台电脑,一个键盘,尽情挥洒智慧的人生;几行数字,几个字母,认真编写生活的美好;
一 个灵感,一段程序,推动科技进步,促进社会发展。
创作不易,喜欢的老铁们加个关注,点个赞,打个赏,后面会不定期更新干货和技术相关的资讯,速速收藏,谢谢!你们的一个小小举动就是对小编的认可,更是创作的动力。

