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

相关文章
|
移动开发 Dart 前端开发
【技术干货】移动端跨平台技术发展
移动端跨平台技术一直在寻求研发效率动态性与性能体验间的平衡,本文归纳总结Hybrid技术、React Native技术、Flutter、小程序的技术演进与未来趋势。
2686 0
|
移动开发 程序员 Android开发
寒冬之下,移动开发没人要了, iOS 开发者该 何去何从?
前言: 作者 | 梅梅    文章来源 CSDN 对于移动互联网而言,2018 年像是球场上的一声裁判哨。哨声响起,高潮迭起的上半场结束。本该再创辉煌的下半场,还没开赛却被告之:规则改变、场地收缩、教练下课、冷板凳无限加长。
|
16天前
|
安全 搜索推荐 Android开发
揭秘iOS与安卓系统的差异:一场技术与哲学的较量
在智能手机的世界里,iOS和Android无疑是两大巨头,它们不仅定义了操作系统的标准,也深刻影响了全球数亿用户的日常生活。本文旨在探讨这两个平台在设计理念、用户体验、生态系统及安全性等方面的本质区别,揭示它们背后的技术哲学和市场策略。通过对比分析,我们将发现,选择iOS或Android,不仅仅是选择一个操作系统,更是选择了一种生活方式和技术信仰。
|
1月前
|
Dart Android开发 开发者
掌握跨平台移动应用开发:Flutter 的崛起
【10月更文挑战第9天】本文介绍了Flutter,一个由Google支持的开源UI工具包,专注于跨平台移动应用开发。文章详细探讨了Flutter的核心优势,如原生性能、热重载、丰富的组件及高可定制性,并提供了实施开发的步骤指南。此外,还分享了Flutter在快速原型开发、高性能应用及跨平台维护中的应用实例和实战技巧,旨在帮助开发者高效利用Flutter构建高质量移动应用。
|
1月前
|
前端开发 安全 Android开发
跨平台开发的新纪元:Tauri 2.0 横空出世,移动端、桌面端一网打尽!
Tauri 2.0 正式版于 2024 年 10 月 2 日发布,带来了多项重大更新。此次更新不仅全面支持 iOS 和 Android,实现“一次编写,到处运行”,还升级了插件系统,增强了灵活性与可扩展性。安全性大幅提升,引入新的权限系统,并优化了 IPC 层,支持原始有效载荷传输,大幅提高性能。此外,Tauri 2.0 还支持热模块替换(HMR),简化了应用分发流程,成为跨平台开发的重要里程碑。
189 0
跨平台开发的新纪元:Tauri 2.0 横空出世,移动端、桌面端一网打尽!
|
1月前
|
物联网 vr&ar Android开发
掌握安卓与iOS应用开发:核心技术与未来趋势
本文深入探讨了安卓和iOS应用开发的核心技术,包括开发环境、主要编程语言、常用框架以及性能优化技巧。同时,文章还展望了两大平台未来的发展趋势,如人工智能、增强现实和物联网的集成,为开发者提供全面的技术参考和发展指引。
|
2月前
|
人工智能 vr&ar Android开发
探索安卓与iOS的无限可能:移动操作系统的技术革新与未来展望
本文旨在探讨安卓和iOS这两大主流移动操作系统在技术上的创新与突破,以及它们如何塑造我们的数字生活。通过深入分析两者的最新进展、面临的挑战以及未来的发展趋势,文章揭示了移动操作系统在推动科技进步和满足用户需求方面的关键作用。我们将从技术角度出发,解读安卓的开放性与iOS的封闭性如何影响应用生态和用户体验,并探讨这些差异背后的设计理念和商业考量。同时,我们还将关注两大系统在安全性、隐私保护、人工智能集成等方面的最新动态,以及它们如何应对日益增长的网络安全威胁和用户对隐私保护的需求。此外,文章还将展望未来移动操作系统的发展,分析5G、物联网等新兴技术如何为安卓和iOS带来新的机遇和挑战,以及这两大
77 6
|
2月前
|
安全 Android开发 数据安全/隐私保护
安卓与iOS的对决:移动操作系统的性能与创新
在当今智能手机市场,安卓和iOS两大操作系统一直处于竞争状态。本文将深入探讨它们在性能、安全性和用户体验方面的不同,并分析这些差异如何影响用户的选择。
55 3
|
3月前
|
前端开发 开发工具 Android开发
探索安卓与iOS应用开发:跨平台解决方案的崛起
【8月更文挑战第27天】在移动设备日益普及的今天,安卓和iOS系统占据了市场的主导地位。开发者们面临着一个重要问题:是选择专注于单一平台,还是寻找一种能够同时覆盖两大系统的解决方案?本文将探讨跨平台开发工具的优势,分析它们如何改变了移动应用的开发格局,并分享一些实用的开发技巧。无论你是新手还是资深开发者,这篇文章都将为你提供有价值的见解和建议。
|
4月前
|
Dart 前端开发 JavaScript
移动应用开发的未来趋势:跨平台框架的崛起
随着移动设备的普及和技术的发展,移动应用开发领域正在经历一场革命。传统的原生应用开发模式正逐渐让位于更为灵活、高效的跨平台框架。本文将探讨跨平台框架的优势、挑战以及它们如何改变移动应用开发的生态。 【7月更文挑战第28天】
52 4