您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

Electron是目前最好的桌面框架吗?

时间:2023-01-04 15:14:51  来源:  作者:DR科技

如果您正在尝试使用JAVAScript构建桌面应用程序,您可能至少考虑过Electron。Github于2013年为其Atom编辑器发布了Electron,并被Microsoft、Discord和Slack等许多大公司使用。本文的目的是客观地概述Electron及其优缺点。本文还介绍了一些替代方案以及您是否要使用它们。

2013年,GitHub尝试做一个新的优雅的编辑器,叫做Atom。他们还想使用网络技术来构建它。不幸的是,那时候并没有那么多好的工具可以使用Web技术创建应用程序。嵌入浏览器的选项很少,而且其中很多都构建得不好。GitHub决定为此创建自己的工具并将其命名为Atom-Shell。它发展迅速,尽管VSCode在Atom上受到了很大的打击。后来改名为Electron,还是老样子。

Electron本质上是将Chromium和Node.js封装到桌面应用程序中。Chromium使用Chrome和Node.js是最流行的服务器端JavaScript引擎。这两个项目都维护良好且成熟,因此它们是经过优化且可靠的工具。

Electron允许你在前端使用JavaScript,就像普通网站一样。它还允许您使用Node.js访问文件和其他与系统相关的操作。因为Electron允许你用JavaScript做任何事情,所以它已经成为构建JavaScript桌面应用程序的流行方式。

因为Electron结合了整个浏览器和Node.js,所以它倾向于创建大型应用程序。一个简单的Electron应用程序在没有压缩的情况下通常重约120MB。

相比之下,另一个流行的跨平台框架Flutter的应用程序只有5MB。因为Electron同时运行多个JavaScript实例,所以它会消耗大量RAM和CPU。如您所见,使用Electron既有优点也有缺点。你应该使用电子吗?

优势:

一个大社区

受到Microsoft、Discord、Slack等的信任

低学习曲线

允许使用网络生态系统

与Node.js集成

丢失的:

大(~120MB)安装大小

使用大量内存和CPU

不支持手机

有点不安全,让用户很容易看到应用程序内部

本机代码无法集成到Node.jsFFI之外

首先,Electron背后有一个庞大的社区,包括几家公司,这意味着有大量的开源工具、教程等等。您还可以使用网络生态系统中的大部分工具和教程。Electron的学习曲线也很低,因为如果你了解JavaScript,那么你就了解Electron。另一个优势是Electron直接与Node.js集成,允许您在沙箱之外使用JavaScript的全部功能。

然而,这些优点也有一些缺点。首先,Electron又重又慢。Electron应用程序的基本大小约为120MB,并且由于它是RAM和CPU密集型,Electron的RAM消耗量可能达到数百兆字节。

Electron的另一个主要缺点是它缺乏移动支持。您可以在macwindowslinux上部署Electron应用程序(某些发行版如PureOS除外),但不能在IOSAndroid上部署。有一些解决方法,例如使用Ionic,但其中许多方法需要对代码和工具进行重大更改。

此外,如果您有一个注重安全性的应用程序,Electron可能不是您的最佳选择。Electron允许用户通过开发者工具和ASAR源文件轻松访问源代码。当然,同样的东西也可以用于web应用程序,但是一些桌面框架,比如Tauri,使得访问源代码变得更加困难。

最后,如果你尝试在Electron中使用其他语言而不是Node.js,你会遇到问题。

您也可以使用其他语言,但只能通过WebAssembly或Node.jsFFI,这可能难以设置并且会降低性能。

正如您所看到的,Electron在很多方面都很棒,但在其他方面就没那么棒了。总的来说,如果你想到处使用JavaScript,并且不太关心性能或安全性,Electron是一个相当不错的选择。但是,如果您遇到性能问题、需要移动支持或想要最佳安全性,您可能不想使用Electron。

电子的替代品

金牛座

Electron和Tauri之间有两个主要区别。

首先是Tauri使用操作系统内置的浏览器,这显着减小了应用程序的大小并提高了其性能。

另一个是Tauri后端是基于Rust而不是Node.js构建的。这允许直接使用Rust而无需使用Node.jsFFI或WASM。这也让Tauri更快,内存效率更高。Tauri应用程序可以小到几兆字节,它们的内存使用量通常是Electron应用程序的一半。

Tauri也可能更安全,因为它混淆了源代码并禁用了生产中的开发人员工具。默认情况下,Tauri中不包含Node.js,但您可以添加它。但Tauri仍然有其缺点。第一个问题是,由于Tauri并不总是使用Chromium,因此您需要支持多种浏览器。

另一个缺点是Tauri相对较新,没有那么大的社区。如果你准备尝试新技术,Tauri是一个不错的选择。

优势:

应用程序更小,使用的资源更少

更安全

与Rust集成

丢失的:

有些用户不使用Chrome

较小的社区

渐进式Web应用程序(PWA)

渐进式Web应用程序或PWA是渐进式改进的Web应用程序,大多数浏览器都支持它。

浏览器可以检测PWA并在您访问其网站时提示您安装它们,而不是将它们打包到可安装文件中。您还可以从MicrosoftAppStore和googlePlay等应用商店安装PWA。

从浏览器安装是可行的,因为PWA本质上是具有一些额外功能的网站。这意味着用户可以使用网站的基本功能,如果他们想要更多,可以安装PWA。因此,它们逐渐得到改进。

创建PWA有很多好处。首先,它们很小,而且由于PWA与您的网站资产一样大,您可以从几百KB开始制作完整的应用程序。

另一个优点是更新PWA就像更新网站一样容易。你不需要成为自动更新者,只需配置缓存软件,当有更新时更新缓存即可。PWA也很容易分发到许多不同的平台,包括所有主要的移动和桌面平台。

PWA也有一些缺点。首先,他们对本机API的访问权限有限,并且浏览器对这些API的支持可能有限。其次,Firefox并不完全支持PWA。

最后,PWA目前无法以许多常见格式分发,尽管在支持以MSIX包等格式打包PWA方面取得了很大进展。如果您想要让您的Web应用程序面向未来、想要轻松部署和更新,或者想要移动支持,PWA是一个不错的选择。

优势:

可以直接从网站安装

通过应用程序商店轻松分发

也可以自动作为网站使用

非常小(可能小于1MB)

易于更新

支持桌面和移动设备

丢失的:

有限的本机API访问

Firefox不支持PWA

难以作为基于文件的安装程序分发

总结

在某些情况下,Electron可能会有所帮助。然而,它并不总是最好的工具。这完全取决于您的应用程序的需求和重点。

如果你更喜欢在更大社区的项目上工作,Electron是一个不错的选择。如果您正在使用Rust并想要一个快速的桌面Web应用程序,Tauri非常适合。最后,如果你想要快速上市、移动支持并且不想维护你的应用程序的两个版本,PWA可以很好地工作。



Tags:Electron   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  Search: Electron  点击:(47)  评论:(0)  加入收藏
如何为Electron应用开发原生模块
大家都知道JavaScript无论是在浏览器中运行、还是在Node.js中运行都是单线程运行的,所以并不适合在处理一些CPU密集型任务。但是Node.js允许开发者使用C、C++等语言开发像普...【详细内容】
2023-12-26  Search: Electron  点击:(81)  评论:(0)  加入收藏
Electron、Vite和Vue 3助你打造功能丰富桌面应用
Vite的快速热更新能力和Vue 3的高效性能,加速了开发周期,使得开发者能够更快地迭代和测试应用。很多vue3的UI可以使用,例如本文选用的arco-design,这就是站在巨人肩膀之上。背景...【详细内容】
2023-08-28  Search: Electron  点击:(282)  评论:(0)  加入收藏
使用Electron打造跨平台程序需要关注的技术点
背景上篇文章已经介绍了使用electron forge+vite+vue3来实现一个桌面应用程序的框架。本文重点介绍完善一个这样的框架的几个通用的需求点及实现方式。需求 实现客户端在线...【详细内容】
2023-08-15  Search: Electron  点击:(175)  评论:(0)  加入收藏
Electron是目前最好的桌面框架吗?
如果您正在尝试使用JavaScript构建桌面应用程序,您可能至少考虑过Electron。GitHub于2013年为其Atom编辑器发布了Electron,并被Microsoft、Discord和Slack等许多大公司使用。...【详细内容】
2023-01-04  Search: Electron  点击:(382)  评论:(0)  加入收藏
使用.NET5、Blazor和Electron.NET构建跨平台桌面应用
Electron.NET是一个嵌入了ASP.NET Core的Electron的封装,通过Electron.NET可以构建基于.NET5的跨平台的桌面应用,使得开发人员只需要使用ASP.NET Core和 Blazor就可以胜任桌面...【详细内容】
2021-11-30  Search: Electron  点击:(867)  评论:(0)  加入收藏
electron 打包vue为桌面应用的详细过程
1.vue create demo2.vue ui3.搜索 vue-cli-plugin-electron-builder,勾选,安装4.npm run electron:serve5.npm run electron:build6.build complete!构建完成!构建完成后,看一...【详细内容】
2021-09-09  Search: Electron  点击:(516)  评论:(0)  加入收藏
Electron 简介
本教程我们来学习 Electron 的基础知识,下面我们先来学习一下什么是 Electron。Electron是什么Electron 是是 GitHub 开发的一个开源框架。它允许使用 Node.js(作为后端)和 Chr...【详细内容】
2021-05-18  Search: Electron  点击:(9663)  评论:(0)  加入收藏
基于 Vue3.0+Electron 搭建桌面端应用
目前electron最新稳定版本为v11.2.1,star高达89.2K+。# 官网地址https://www.electronjs.org/# 仓库地址https://github.com/electron/electron有数千个超优秀的软件是基于E...【详细内容】
2021-02-08  Search: Electron  点击:(2523)  评论:(0)  加入收藏
electron-builder 打包生成桌面App
开发electron客户端程序,打包是绕不开的问题。如何使用来源:https://www.php.cn/div-tutorial-411690.htmlbuilder的使用和配置都是很简单的builder配置有两种方式package.jso...【详细内容】
2020-08-07  Search: Electron  点击:(1716)  评论:(0)  加入收藏
▌简易百科推荐
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(8)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(12)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(54)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(47)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(39)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(50)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(68)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(86)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(86)  评论:(0)  加入收藏
花 15 分钟把 Express.js 搞明白,全栈没有那么难
Express 是老牌的 Node.js 框架,以简单和轻量著称,几行代码就可以启动一个 HTTP 服务器。市面上主流的 Node.js 框架,如 Egg.js、Nest.js 等都与 Express 息息相关。Express 框...【详细内容】
2024-01-16  程序员成功  微信公众号  Tags:Express.js   点击:(88)  评论:(0)  加入收藏
站内最新
站内热门
站内头条