如果您正在尝试使用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的另一个主要缺点是它缺乏移动支持。您可以在mac、windows和linux上部署Electron应用程序(某些发行版如PureOS除外),但不能在IOS或Android上部署。有一些解决方法,例如使用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可以很好地工作。