如果您正在嘗試使用JAVAScript構(gòu)建桌面應(yīng)用程序,您可能至少考慮過Electron。GitHub于2013年為其Atom編輯器發(fā)布了Electron,并被Microsoft、Discord和Slack等許多大公司使用。本文的目的是客觀地概述Electron及其優(yōu)缺點(diǎn)。本文還介紹了一些替代方案以及您是否要使用它們。
2013年,GitHub嘗試做一個新的優(yōu)雅的編輯器,叫做Atom。他們還想使用網(wǎng)絡(luò)技術(shù)來構(gòu)建它。不幸的是,那時(shí)候并沒有那么多好的工具可以使用Web技術(shù)創(chuàng)建應(yīng)用程序。嵌入瀏覽器的選項(xiàng)很少,而且其中很多都構(gòu)建得不好。GitHub決定為此創(chuàng)建自己的工具并將其命名為Atom-Shell。它發(fā)展迅速,盡管VSCode在Atom上受到了很大的打擊。后來改名為Electron,還是老樣子。
Electron本質(zhì)上是將Chromium和Node.js封裝到桌面應(yīng)用程序中。Chromium使用Chrome和Node.js是最流行的服務(wù)器端JavaScript引擎。這兩個項(xiàng)目都維護(hù)良好且成熟,因此它們是經(jīng)過優(yōu)化且可靠的工具。
Electron允許你在前端使用JavaScript,就像普通網(wǎng)站一樣。它還允許您使用Node.js訪問文件和其他與系統(tǒng)相關(guān)的操作。因?yàn)镋lectron允許你用JavaScript做任何事情,所以它已經(jīng)成為構(gòu)建JavaScript桌面應(yīng)用程序的流行方式。
因?yàn)镋lectron結(jié)合了整個瀏覽器和Node.js,所以它傾向于創(chuàng)建大型應(yīng)用程序。一個簡單的Electron應(yīng)用程序在沒有壓縮的情況下通常重約120MB。
相比之下,另一個流行的跨平臺框架Flutter的應(yīng)用程序只有5MB。因?yàn)镋lectron同時(shí)運(yùn)行多個JavaScript實(shí)例,所以它會消耗大量RAM和CPU。如您所見,使用Electron既有優(yōu)點(diǎn)也有缺點(diǎn)。你應(yīng)該使用電子嗎?
優(yōu)勢:
一個大社區(qū)
受到Microsoft、Discord、Slack等的信任
低學(xué)習(xí)曲線
允許使用網(wǎng)絡(luò)生態(tài)系統(tǒng)
與Node.js集成
丟失的:
大(~120MB)安裝大小
使用大量內(nèi)存和CPU
不支持手機(jī)
有點(diǎn)不安全,讓用戶很容易看到應(yīng)用程序內(nèi)部
本機(jī)代碼無法集成到Node.jsFFI之外
首先,Electron背后有一個龐大的社區(qū),包括幾家公司,這意味著有大量的開源工具、教程等等。您還可以使用網(wǎng)絡(luò)生態(tài)系統(tǒng)中的大部分工具和教程。Electron的學(xué)習(xí)曲線也很低,因?yàn)槿绻懔私釰avaScript,那么你就了解Electron。另一個優(yōu)勢是Electron直接與Node.js集成,允許您在沙箱之外使用JavaScript的全部功能。
然而,這些優(yōu)點(diǎn)也有一些缺點(diǎn)。首先,Electron又重又慢。Electron應(yīng)用程序的基本大小約為120MB,并且由于它是RAM和CPU密集型,Electron的RAM消耗量可能達(dá)到數(shù)百兆字節(jié)。
Electron的另一個主要缺點(diǎn)是它缺乏移動支持。您可以在mac、windows和linux上部署Electron應(yīng)用程序(某些發(fā)行版如PureOS除外),但不能在IOS或Android上部署。有一些解決方法,例如使用Ionic,但其中許多方法需要對代碼和工具進(jìn)行重大更改。
此外,如果您有一個注重安全性的應(yīng)用程序,Electron可能不是您的最佳選擇。Electron允許用戶通過開發(fā)者工具和ASAR源文件輕松訪問源代碼。當(dāng)然,同樣的東西也可以用于web應(yīng)用程序,但是一些桌面框架,比如Tauri,使得訪問源代碼變得更加困難。
最后,如果你嘗試在Electron中使用其他語言而不是Node.js,你會遇到問題。
您也可以使用其他語言,但只能通過WebAssembly或Node.jsFFI,這可能難以設(shè)置并且會降低性能。
正如您所看到的,Electron在很多方面都很棒,但在其他方面就沒那么棒了。總的來說,如果你想到處使用JavaScript,并且不太關(guān)心性能或安全性,Electron是一個相當(dāng)不錯的選擇。但是,如果您遇到性能問題、需要移動支持或想要最佳安全性,您可能不想使用Electron。
電子的替代品
金牛座
Electron和Tauri之間有兩個主要區(qū)別。
首先是Tauri使用操作系統(tǒng)內(nèi)置的瀏覽器,這顯著減小了應(yīng)用程序的大小并提高了其性能。
另一個是Tauri后端是基于Rust而不是Node.js構(gòu)建的。這允許直接使用Rust而無需使用Node.jsFFI或WASM。這也讓Tauri更快,內(nèi)存效率更高。Tauri應(yīng)用程序可以小到幾兆字節(jié),它們的內(nèi)存使用量通常是Electron應(yīng)用程序的一半。
Tauri也可能更安全,因?yàn)樗煜嗽创a并禁用了生產(chǎn)中的開發(fā)人員工具。默認(rèn)情況下,Tauri中不包含Node.js,但您可以添加它。但Tauri仍然有其缺點(diǎn)。第一個問題是,由于Tauri并不總是使用Chromium,因此您需要支持多種瀏覽器。
另一個缺點(diǎn)是Tauri相對較新,沒有那么大的社區(qū)。如果你準(zhǔn)備嘗試新技術(shù),Tauri是一個不錯的選擇。
優(yōu)勢:
應(yīng)用程序更小,使用的資源更少
更安全
與Rust集成
丟失的:
有些用戶不使用Chrome
較小的社區(qū)
漸進(jìn)式Web應(yīng)用程序(PWA)
漸進(jìn)式Web應(yīng)用程序或PWA是漸進(jìn)式改進(jìn)的Web應(yīng)用程序,大多數(shù)瀏覽器都支持它。
瀏覽器可以檢測PWA并在您訪問其網(wǎng)站時(shí)提示您安裝它們,而不是將它們打包到可安裝文件中。您還可以從MicrosoftAppStore和googlePlay等應(yīng)用商店安裝PWA。
從瀏覽器安裝是可行的,因?yàn)镻WA本質(zhì)上是具有一些額外功能的網(wǎng)站。這意味著用戶可以使用網(wǎng)站的基本功能,如果他們想要更多,可以安裝PWA。因此,它們逐漸得到改進(jìn)。
創(chuàng)建PWA有很多好處。首先,它們很小,而且由于PWA與您的網(wǎng)站資產(chǎn)一樣大,您可以從幾百KB開始制作完整的應(yīng)用程序。
另一個優(yōu)點(diǎn)是更新PWA就像更新網(wǎng)站一樣容易。你不需要成為自動更新者,只需配置緩存軟件,當(dāng)有更新時(shí)更新緩存即可。PWA也很容易分發(fā)到許多不同的平臺,包括所有主要的移動和桌面平臺。
PWA也有一些缺點(diǎn)。首先,他們對本機(jī)API的訪問權(quán)限有限,并且瀏覽器對這些API的支持可能有限。其次,F(xiàn)irefox并不完全支持PWA。
最后,PWA目前無法以許多常見格式分發(fā),盡管在支持以MSIX包等格式打包PWA方面取得了很大進(jìn)展。如果您想要讓您的Web應(yīng)用程序面向未來、想要輕松部署和更新,或者想要移動支持,PWA是一個不錯的選擇。
優(yōu)勢:
可以直接從網(wǎng)站安裝
通過應(yīng)用程序商店輕松分發(fā)
也可以自動作為網(wǎng)站使用
非常小(可能小于1MB)
易于更新
支持桌面和移動設(shè)備
丟失的:
有限的本機(jī)API訪問
Firefox不支持PWA
難以作為基于文件的安裝程序分發(fā)
總結(jié)
在某些情況下,Electron可能會有所幫助。然而,它并不總是最好的工具。這完全取決于您的應(yīng)用程序的需求和重點(diǎn)。
如果你更喜歡在更大社區(qū)的項(xiàng)目上工作,Electron是一個不錯的選擇。如果您正在使用Rust并想要一個快速的桌面Web應(yīng)用程序,Tauri非常適合。最后,如果你想要快速上市、移動支持并且不想維護(hù)你的應(yīng)用程序的兩個版本,PWA可以很好地工作。