十年跨平台开发,Electron 凭什么占据一席之地?

简介: 本文首发于微信公众号“前端徐徐”。作者徐徐将系统整理Electron的相关知识,分享更多开发经验。Electron是一个已有10年历史的跨端开发框架,本文将从其诞生背景、优劣势、生态、案例等方面进行详细介绍,并与其他框架进行对比,帮助读者全面了解Electron。

本文首发微信公众号:前端徐徐。

大家好,我是徐徐。今天我们来认识认识 Electron。

前言

其实一直想系统的写一写 Electron 相关的文章,之前在掘金上写过,但是现在来看那些文章都写得挺粗糙的,所以现在我决定系统整理相关的知识,输出自己更多 Electron 开发相关的经验。这一节我们主要是来认识一下 Electron,这个已经有 10 年历史的跨端开发框架。我将从诞生背景,优劣势,生态,案例以及和其他框架的对比这几个方面带大家来认识 Electron。

Electron 诞生背景

Electron 的背景还是很强劲的,下面我们就来看看它是如何诞生的。

起源

Electron 的前身 Atom Shell,由 GitHub 的开发者在 2013 年创建的,当时 Atom 需要一个能够在桌面环境中运行的跨平台框架,同时能够利用 web 技术构建现代化的用户界面,于是就有了 Electron 的雏形。

需求 & Web 技术的发展

互联网的兴起使得桌面端的需求日益增长,传统的桌面应用开发需要针对每个操作系统(Windows、macOS、Linux)分别编写代码,这增加了开发和维护成本,所以非常需要可以通过一次开发实现多平台支持的框架。

随着 HTML5、CSS3 和 JavaScript 的快速发展,web 技术变得越来越强大和灵活。开发者希望能够利用这些技术构建现代化的用户界面,并且享受 web 开发工具和框架带来的便利。这使得更加需要一款跨端大杀器架来支持开发者,Electron 应运而生。

发展历程

  • 2013 年:Atom Shell 诞生,最初用于 GitHub 的 Atom 编辑器。
  • 2014 年 2 月:Atom 编辑器对外发布,Atom Shell 作为其核心技术。
  • 2015 年 4 月:Atom Shell 更名为 Electron,并作为一个独立项目发布。随着时间的推移,Electron 的功能和社区支持不断增强。
  • 2016 年:Electron 的应用开始广泛传播,许多公司和开发者开始使用 Electron 构建跨平台桌面应用。
  • 2020 年:Electron 发布 10.0 版本,进一步增强了稳定性和性能。
  • 2023 年:Electron 10 周年

更多可以参考:

https://www.electronjs.org/blog/electron

Electron 优势

Electron 的优势非常的明显,大概总结为下面四个方面。

跨平台支持

Electron 的最大优势在于其跨平台特性。开发者可以编写一次代码,Electron 会处理不同操作系统之间的差异,使应用能够在 Windows、macOS 和 Linux 上无缝运行。

前端技术栈

Electron 应用使用 HTML、CSS 和 JavaScript 构建界面。开发者可以使用流行的前端框架和工具(如 React、Vue.js、Angular)来开发应用,提高开发效率和代码质量。

Node.js 集成

Electron 将 Chromium 和 Node.js 集成在一起,这使得应用不仅可以使用 web 技术构建界面,还可以使用 Node.js 访问底层系统资源,如文件系统、网络、进程等。

强大社区

Electron 拥有丰富的文档、教程、示例和强大的社区支持。开发者可以很容易地找到解决问题的方法和最佳实践,从而加快开发速度。

Electron 劣势

当然,一个东西都有两面性,有优势肯定也有劣势,劣势大概总结为以下几个方面。

性能问题

Electron 应用由于需要运行一个完整的 Chromium 实例,通常会占用较高的内存和 CPU 资源,性能相对较差。这在资源有限的设备上(如老旧计算机)尤为明显。

打包体积大

由于需要包含 Chromium 和 Node.js 运行时,Electron 应用的打包体积较大。一个简单的 Electron 应用的打包体积可能达到几十到上百 MB,这对于一些应用场景来说是不小的负担。

安全性

Electron 应用需要处理 web 技术带来的安全问题,如跨站脚本(XSS)攻击和远程代码执行(RCE)漏洞。开发者需要特别注意安全性,采取适当的防护措施(如使用 contextIsolationsandboxContent Security Policy 等)。

生态

上面谈到了 Electron 的优势和劣势,下面我们来看看 Electron 的生态。对于一款开源框架,生态是非常关键的,社区活跃度以及相应的配套工具非常影响框架的生态,如果有众多的开发者支持和维护这个框架,那么它的生态才会越来越好。Electron 的生态依托于 Node.js 发展出了很多很多开源工具,其生态是相当的繁荣。下面可以看看两张图就知道其生态的繁荣之处。

  • GitHub 情况

  • NPM 情况

下面是一些常见的相关生态工具。

打包和分发工具

  • electron-packager:用于将 Electron 应用打包成可执行文件。支持多平台打包,简单易用。
  • electron-builder:一个功能强大的打包工具,支持自动更新、多平台打包和安装程序制作。

测试工具

  • Spectron:基于 WebDriver,用于 Electron 应用的端到端测试。支持模拟用户操作和验证应用行为。
  • electron-mocha:用于在 Electron 环境中运行 Mocha 测试,适合进行单元测试和集成测试。

开发工具

  • Electron Forge:一个集成开发工具,简化了 Electron 应用的开发、打包和分发流程。支持脚手架、插件系统和自动更新。
  • Electron DevTools:调试和分析 Electron 应用性能的工具,帮助开发者优化应用性能。

案例

用 Electron开发的软件非常多,国内外都有很多知名的软件,有了成功的案例才会吸引更多的开发者使用它,下面是一些举例。

国内

  • QQ
  • 微信开发者工具  
  • 百度网盘
  • 语雀
  • 网易灵犀办公
  • 网易云音乐

国外

  • Visual Studio Code  
  • Slack  
  • Discord  
  • GitHub Desktop  
  • Postman
  • WhatsApp

其他更多可参考:https://www.electronjs.org/apps

一个小技巧,Mac 电脑检测应用是否是 Electron 框架,在命令行运行如下代码:

for app in /Applications/*; do;[ -d  $app/Contents/Frameworks/Electron\ Framework.framework ] && echo $app; done

和其他跨端框架的对比

一个框架的诞生避免不了与同类型的框架对比,下面是一个对比表格,展示了 Electron 与其他流行的跨端桌面应用开发框架(如 NW.js、Proton Native、Tauri 和 Flutter Desktop)的优缺点和特性:

特性

Electron

NW.js

Proton Native

Tauri

Flutter Desktop

开发语言

JavaScript, HTML, CSS

JavaScript, HTML, CSS

JavaScript, React

Rust, JavaScript, HTML, CSS

Dart

框架大小

大(几十到几百 MB)

中等(几十 MB)

中等(几十 MB)

小(几 MB)

大(几十到几百 MB)

性能

中等

中等

中等

跨平台支持

Windows, macOS, Linux

Windows, macOS, Linux

Windows, macOS, Linux

Windows, macOS, Linux

Windows, macOS, Linux

使用的技术栈

Chromium, Node.js

Chromium, Node.js

React, Node.js

Rust, WebView

Flutter Engine

生态系统和社区

非常活跃,生态丰富

活跃

停滞了

新兴,快速增长

活跃,现阶段更新不频繁

开发难度

易于上手

易于上手

需要 React 知识

需要 Rust 和前端知识

需要 Dart 知识

自动更新支持

内置支持

需要手动实现

需要手动实现

需要手动实现

需要手动实现

原生功能访问

通过 Node.js 模块访问

通过 Node.js 模块访问

通过 Node.js 和原生模块访问

通过 Rust 原生模块访问

通过插件和原生模块访问

热重载和开发体验

支持(需要配置)

支持(需要配置)

支持(需要配置)

支持(需要配置)

支持(内置支持)

打包和发布

Electron Builder, Forge

nw-builder

需要手动配置打包工具

Tauri 打包工具

Flutter build tools

常见应用场景

聊天应用、生产力工具、IDE

聊天应用、生产力工具

小型工具和实用程序

轻量级、性能要求高的应用

跨平台移动和桌面应用

知名应用

VS Code, Slack, Discord, 知名应用

WebTorrent, 其他工具

小型 React 工具和应用

新兴应用和工具

仅少数桌面应用,Flutter主打移动应用

结语

Electron 是一个强大的跨平台开发框架,其诞生对前端开发者的意义非常大,让很多从事前端的开发者也有机会开发桌面客户端,扩大了前端开发工程师的岗位需求。当然,它不一定是最好的框架,因为适合自己的才是最好的,主要还是看自己的业务场景和技术需要,优势和劣势都是需要考虑的,仁者见仁,智者见智。

相关文章
|
移动开发 程序员 Android开发
寒冬之下,移动开发没人要了, iOS 开发者该 何去何从?
前言: 作者 | 梅梅    文章来源 CSDN 对于移动互联网而言,2018 年像是球场上的一声裁判哨。哨声响起,高潮迭起的上半场结束。本该再创辉煌的下半场,还没开赛却被告之:规则改变、场地收缩、教练下课、冷板凳无限加长。
|
1天前
|
前端开发 安全 Android开发
跨平台开发的新纪元:Tauri 2.0 横空出世,移动端、桌面端一网打尽!
Tauri 2.0 正式版于 2024 年 10 月 2 日发布,带来了多项重大更新。此次更新不仅全面支持 iOS 和 Android,实现“一次编写,到处运行”,还升级了插件系统,增强了灵活性与可扩展性。安全性大幅提升,引入新的权限系统,并优化了 IPC 层,支持原始有效载荷传输,大幅提高性能。此外,Tauri 2.0 还支持热模块替换(HMR),简化了应用分发流程,成为跨平台开发的重要里程碑。
7 0
跨平台开发的新纪元:Tauri 2.0 横空出世,移动端、桌面端一网打尽!
|
1月前
|
移动开发 安全 vr&ar
移动应用与操作系统:探索移动开发的未来趋势
在当今的数字化时代,移动应用和操作系统已经成为我们生活中不可或缺的一部分。它们不仅改变了我们的生活方式,还为企业和个人提供了无限的可能性。本文将深入探讨移动应用开发和操作系统的关键技术、挑战以及未来发展趋势。我们将从移动应用开发的基本概念入手,介绍主流的移动操作系统,并分析其优缺点。接着,我们将探讨移动应用开发中的关键技术,如跨平台开发、人工智能集成、安全性问题等。最后,我们将展望未来移动应用开发的发展趋势,包括5G技术的应用、物联网的融合以及增强现实/虚拟现实技术的普及。通过本文,读者将能够全面了解移动应用与操作系统的现状和未来,为在这个领域的发展提供有力的参考。
|
2月前
|
前端开发 开发工具 Android开发
探索安卓与iOS应用开发:跨平台解决方案的崛起
【8月更文挑战第27天】在移动设备日益普及的今天,安卓和iOS系统占据了市场的主导地位。开发者们面临着一个重要问题:是选择专注于单一平台,还是寻找一种能够同时覆盖两大系统的解决方案?本文将探讨跨平台开发工具的优势,分析它们如何改变了移动应用的开发格局,并分享一些实用的开发技巧。无论你是新手还是资深开发者,这篇文章都将为你提供有价值的见解和建议。
|
2月前
|
移动开发 前端开发 JavaScript
"跨界大战!React Native、Weex、Flutter:三大混合开发王者正面交锋,揭秘谁才是你移动应用开发的终极利器?"
【8月更文挑战第12天】随着移动应用开发的需求日益增长,高效构建跨平台应用成为关键。React Native、Weex与Flutter作为主流混合开发框架各具特色。React Native依托Facebook的强大支持,以接近原生的性能和丰富的组件库著称;Weex由阿里巴巴开发,性能优越尤其在大数据处理上表现突出;Flutter则凭借Google的支持及独特的Dart语言和Skia渲染引擎,提供出色的定制能力和开发效率。选择时需考量项目特性、团队技能及生态系统的成熟度。希望本文对比能助你做出最佳决策。
131 1
|
3月前
|
Dart 前端开发 JavaScript
移动应用开发的未来趋势:跨平台框架的崛起
随着移动设备的普及和技术的发展,移动应用开发领域正在经历一场革命。传统的原生应用开发模式正逐渐让位于更为灵活、高效的跨平台框架。本文将探讨跨平台框架的优势、挑战以及它们如何改变移动应用开发的生态。 【7月更文挑战第28天】
|
4月前
|
边缘计算 前端开发 Android开发
未来趋势下的前端开发:跨平台技术的崛起
随着技术的不断演进,前端开发领域也在迅速变化。本文探讨了未来趋势下前端开发的发展方向,着重分析了跨平台技术在前端开发中的崛起,并探讨了其对开发者和行业的影响。
|
4月前
|
Android开发 开发者 UED
未来已来:Flutter 引领的安卓与跨平台开发奇幻之旅
【6月更文挑战第8天】Flutter,一款引领安卓与跨平台开发革新的框架,以其高效一致的开发体验、精美UI设计和跨平台能力脱颖而出。开发者可使用相同代码库在多平台开发,降低复杂性。其活跃社区和丰富生态系统进一步增强功能。示例代码展示了一个简单的计数器应用,体现Flutter的易用性。随着技术发展,Flutter有望塑造移动应用的未来,开启奇幻之旅。
38 3
|
4月前
|
开发框架 Rust 前端开发
Tauri:现代桌面应用的创新者
Tauri:现代桌面应用的创新者
119 0
|
5月前
|
机器学习/深度学习 Android开发 开发者
移动应用开发的未来趋势:跨平台与原生之争
【5月更文挑战第5天】随着移动设备的普及,移动应用开发已成为技术创新的前沿阵地。本文将探讨移动应用开发的两大主流模式——跨平台与原生开发,分析各自的优势与局限,并预测未来发展趋势。文章还将深入讨论移动操作系统的演进如何影响开发策略,以及开发者如何在快速变化的市场中保持竞争力。