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

相关文章
|
JavaScript 前端开发 API
从架构到API,你真的掌握了Electron的全貌吗?
本文首发于微信公众号“前端徐徐”。作者徐徐从架构层面、协作方式、底层支持、源码层面及API设计等方面剖析了Electron的原理。通过分析Electron的核心组件(Chromium和Node.js)、进程隔离、上下文桥接及IPC机制等内容,揭示了Electron在设计上的精妙之处及其对开发高效、稳定桌面应用的重要性。了解这些原理有助于开发者更好地设计和解决问题。
901 2
从架构到API,你真的掌握了Electron的全貌吗?
|
移动开发 程序员 Android开发
寒冬之下,移动开发没人要了, iOS 开发者该 何去何从?
前言: 作者 | 梅梅    文章来源 CSDN 对于移动互联网而言,2018 年像是球场上的一声裁判哨。哨声响起,高潮迭起的上半场结束。本该再创辉煌的下半场,还没开赛却被告之:规则改变、场地收缩、教练下课、冷板凳无限加长。
|
6月前
|
人工智能 JSON 安全
通义灵码进阶指南:超越基础提示,解锁智能编程新境界
本文深入探讨通义灵码的高阶功能与实用技巧,助你从基础交互迈向精通。内容涵盖项目级理解、精准调试、架构设计协同、高效提示工程及开发流水线集成等多方面,帮助开发者将AI融入深层次工作流。同时提醒用户注意敏感信息保护、保持批判性思维,并关注版本更新与伦理问题。未来,通义灵码将进一步实现深度上下文感知和无缝工具链集成,助力开发者效率革命与思维方式转变。
307 14
|
监控 前端开发 安全
谈谈我做 Electron 应用的这一两年
本文首发于微信公众号“前端徐徐”,作者徐徐分享了过去一两年间开发Electron桌面应用的经验与心得。文章详细介绍了从项目启动、技术选型到具体实施的过程,并探讨了桌面端开发面临的挑战及解决方案,如软件更新、任务队列设计、性能优化等。此外,还列举了一些特殊需求的实现方法,如静默安装、进程禁用等。作者认为,尽管桌面端开发有其独特性,但通过不断探索与实践,仍能显著提升用户体验和技术水平。
647 0
谈谈我做 Electron 应用的这一两年
|
持续交付 项目管理 开发工具
GitLab不再为中国大陆、香港、澳门提供账号服务
GitLab 宣布从2025年2月18日起停止为中国大陆、澳门和香港用户提供 GitLab.com 账号服务,引发广泛关注。极狐 GitLab 已成为国内用户的替代方案,大多数中国用户依赖私有化部署,影响有限。GitLab 是基于 Git 的开源代码仓库管理系统,支持代码托管、项目管理和 CI/CD。其官方仓库位于 gitlab.com/gitlab-org/gitlab,GitHub 上也有镜像版本。开源社区依然活跃,但未来变化尚不确定。
1237 5
GitLab不再为中国大陆、香港、澳门提供账号服务
|
机器学习/深度学习 前端开发 JavaScript
WebAssembly:让前端性能突破极限的秘密武器
WebAssembly(简称 WASM)作为前端开发的性能加速器,能够让代码像 C++ 一样在浏览器中高速运行,突破了 JavaScript 的性能瓶颈。本文详细介绍了 WebAssembly 的概念、工作原理以及其在前端性能提升中的关键作用。通过与 JavaScript 的配合,WASM 让复杂运算如图像处理、3D 渲染、机器学习等在浏览器中流畅运行。文章还探讨了如何逐步集成 WASM,展示其在网页游戏、高计算任务中的实际应用。WebAssembly 为前端开发者提供了新的可能性,是提升网页性能、优化用户体验的关键工具。
6306 2
WebAssembly:让前端性能突破极限的秘密武器
|
机器学习/深度学习 存储 人工智能
基于AI的实时监控系统:技术架构与挑战分析
AI视频监控系统利用计算机视觉和深度学习技术,实现实时分析与智能识别,显著提升高风险场所如监狱的安全性。系统架构包括数据采集、预处理、行为分析、实时决策及数据存储层,涵盖高分辨率视频传输、图像增强、目标检测、异常行为识别等关键技术。面对算法优化、实时性和系统集成等挑战,通过数据增强、边缘计算和模块化设计等方法解决。未来,AI技术的进步将进一步提高监控系统的智能化水平和应对复杂安全挑战的能力。
2546 4
|
安全 Unix Linux
Xshell和Xftp的下载和在linux虚拟机中的使用
这篇文章介绍了Xshell和Xftp的下载、安装和使用方法,包括如何在Linux虚拟机中使用它们进行远程连接和文件传输。
Xshell和Xftp的下载和在linux虚拟机中的使用
|
开发框架 前端开发 JavaScript
常见的跨平台开发框架
【10月更文挑战第25天】这些跨平台开发框架各有特点,开发者可以根据项目的具体需求、团队的技术栈和对性能、用户体验的要求等因素来选择合适的框架进行开发。
|
存储 搜索推荐 API
Electron-store本地存储功能
【10月更文挑战第18天】Electron-store 无疑为我们的 Electron 应用开发提供了强大的支持。它的本地存储功能不仅方便实用,而且性能优异,为我们打造高质量的应用提供了坚实的基础。