Electron 基于 Web 技术开发桌面应用。Web 技术是现如今软件开发领域应用最广泛的技术之一,入门门槛非常低,周边生态繁荣而且历史悠久。
相较于基于 C++ 库开发桌面软件来说,基于 Electron 开发更容易上手且开发效率更高。由于 JavaScript 语言是一门解释执行的语言,所以 C++ 语言固有的各种问题都不再是问题,比如:C++ 没有垃圾回收机制,开发人员要小心翼翼地控制内存,以免造成内存泄漏;C++ 语言特性繁多且复杂,学习难度曲线陡峭,需要针对不同平台进行编译,应用分发困难。使用 Electron 开发桌面应用就不用担心这些问题。
在执行效率上,如果前端代码写得足够优秀,Electron 应用完全可以做出与 C++ 应用相媲美的用户体验,Visual Studio Code 就是先例。另外,Node.js 本身也可以很方便地调用 C++ 扩展,Electron 应用内又包含 Node.js 环境,对于一些音视频编解码或图形图像处理需求,可以使用 Node.js 的 C++ 扩展来完成。
随着 Web 应用大行其道,Web 前端开发领域的技术生态足够繁荣。Electron 可以使用几乎所有的 Web 前端生态领域及 Node.js 生态领域的组件和技术方案。截至本书完稿时,发布到 https://www.npmjs.com/ 平台上的模块已经超过 90 万个,覆盖领域广,优秀模块繁多且使用非常简单方便。
在完成 Web 前端开发工作时,开发者需要考虑很多浏览器兼容的问题,比如:用户是否使用了低版本的 IE 浏览器,是否可以在样式表内使用 Flexbox (弹性盒模型)等。这些问题最终会导致前端开发者束手束脚,写出一些丑陋的兼容代码以保证自己的应用能在所有终端表现正常。
但由于 Electron 内置了 Chromium 浏览器,该浏览器对标淮支持非常好,甚至支持一些尚未通过的标准,所以基于 Electron 开发应用不会遇到兼容问题。开发者的自由度得到了最大化保护,你可以在 Electron 中使用几乎所有 HTML5、CSS3、ES6 标淮中定义的 API。
另外,Web 前端受限访问的文件系统、系统托盘、系统通知等,在 Electron 技术体系下均有 API 供开发者自由使用。
笔记
- 人才数量多:Electron 是基于 Web 技术来开发桌面应用的,而掌握 Web 技术的人是很多的。
- 语言优势:
- 相较于基于 C++ 库开发桌面应用来说,Electron 更容易上手,且效率更高。
- JavaScript 是一门解释执行的语言,很多在 C++ 中需要关注的问题,在 JavaScript 中都不需要关注。比如:C++ 中没有垃圾回收机制,我们得时刻关注内存泄漏问题,但是在 JavaScript 中有垃圾回收,咋们就不需要考虑该问题。
- 执行效率(还行):只要前端代码质量够,Electron 应用的体验效果,完全可以媲美 Native 应用,VScode 就是先例。
- Node.js
- 享受 Node.js 的丰富生态。
- 享受 Node.js 集成 C++ 插件的功能:对于一些 Electron 自身没法实现的功能,我们也可以将 C++ 的代码丢到 Node.js 中。
- 兼容性好:由于 Electron 中内置了 Chromium 浏览器,所以我们在开发时,基本上无需考虑兼容性问题,只要对 chrome 负责即可,而在 chrome 上,我们可以使用几乎所有 HTML5、CSS3、ES6 标准中定义的 API
- 访问系统 API:可以访问在 Web 这个宿主环境下没法访问的系统 API