如果您正在嘗試使用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可以很好地工作。