作为一个跨平台的桌面应用开发框架,Electron 的迷人之处在于,它是建立在 Chromium 和 Node.js 之上的 —— 二位分工明确,一个负责界面,一个负责背后的逻辑,典型的「你负责貌美如花,我负责赚钱养家」。
上面这张图很好的说明了 Electron 的强大之处。
也不难理解,为什么 Electron 能开发跨平台的桌面应用了。
但是,不同系统间还是会有很大的差异,需要相应地做一些额外处理,使得打包出的应用在不同系统下都能正常运转。但相比于 80% 都能完全复用的代码,这些成本几乎可以忽略不计。
所以,对 Web 前端开发者来说,用 Electron 开发多平台客户端的成本非常低。
而且,Electron 是基于 Node.js 的,这就意味着,Node 这个大生态下的模块,Electron 都可以用。
同时,跨平台也让 Electron 可同时开发 Web 应用和桌面应用,无论是 UI,还是代码,很多资源都可以共享,大幅减少了开发者的工作量。
作为目前非常热门的技术,很多应用都是用 Electron 开发的,比如字节跳动的飞书、Slack、VS Code、Atom、Skype、WhatsApp、支付宝小程序 IDE(蚂蚁开发者工具)等。
与此同时,包括蚂蚁金服、小米、华为、GitHub、微软在内的很多大厂都在使用 Electron。因此,学好 Electron 是你日后跳槽加薪的加分项,毕竟,大厂都在用。
如何深入理解,并高效使用 Electron?
用 Electron 写一个简单的桌面端应用并不难,有一定 JavaScript 基础的话,可能只要半小时。但要做一个项目,就没那么容易了:
第一,涉及技能栈众多。我们不仅要了解 Electron、客户端知识,还要在客户端中使用 Node.js,甚至是集成 C++、Rust 等三方库,涉及多进程等概念,对基础薄弱的前端工程师来说有些难度。
第二,基建缺乏,工程化建设难以落地。Electron 基建在大部分公司都比较缺乏,依赖 Web、手机客户端的基建无法满足 Electron 业务,比如在 Mac 端打包可以依赖 iOS 持续集成,但 Windows 端则不行,类似场景非常之多。
第三,欠缺充分利用好 Electron 的能力。在开发 Electron 应用时,很多 Web 前端工程师会习惯性地局限于浏览器开发思维中,做出的交互和体验与 Web 应用一样,不知如何释放自己的想象力,并发挥客户端的作用。
其实,想要掌握 Electron,不仅要理解其基本原理,还要能落地,了解其在工程化建设方面具体应该如何推进。
分享给你一张 Electron 核心知识图谱,只有对每一个知识点仔细梳理并深入理解,才能解决工作中的实际问题。
这张图谱出自邓耀龙,我之前听过他在 Qcon 大会的分享,讲得非常不错。
我之前使用 Electron 的时候也遇到了很多问题。在解决问题的过程中,我经常思考:如何让 Web 前端同学在工程中快速开发、最大程度地发挥 Electron 的作用,为业务带来更好的体验,创造更大的价值。