Electron是目前最適合使用的桌面框架嗎?
如果您正在嘗試使用 JavaScript 來構(gòu)建桌面應(yīng)用程序,那么您可能至少考慮過使用 Electron。Electron 于 2013 年由 GitHub 為其 Atom 編輯器發(fā)布,已被微軟、Discord 和 Slack 等許多大型公司使用。本文旨在客觀地概述 Electron 及其優(yōu)缺點。本文還概述了一些替代方案以及您是否希望使用它們。
2013 年,GitHub 試圖制作一個新的、時尚的編輯器,稱為 Atom。他們還想使用Web技術(shù)來構(gòu)建它。不幸的是,當時并沒有那么多使用 Web 技術(shù)構(gòu)建應(yīng)用程序的好工具。嵌入瀏覽器的方法很少,而且很多都沒有很好地構(gòu)建。GitHub 決定為此構(gòu)建自己的工具并將其命名為 Atom-Shell。它發(fā)展迅速,即使 Atom 受到 VS Code 的重創(chuàng)。后來改名為Electron,現(xiàn)在也是這樣。
Electron本質(zhì)上是將Chromium和Node.js打包成一個桌面應(yīng)用。Chromium是Chrome的動力,Node.js是最流行的服務(wù)器端JavaScript引擎。這兩個項目都得到了很好的維護,而且很成熟,所以它們都是優(yōu)化和可靠的工具。
Electron允許你在前端使用JavaScript,就像一個普通的網(wǎng)站一樣。它還可以讓你使用Node.js來訪問文件和其他系統(tǒng)相關(guān)的操作。因為Electron允許你使用JavaScript來做任何事情,所以它作為制作JavaScript桌面應(yīng)用的一種方式而變得很流行。
然而,因為Electron捆綁了整個瀏覽器和Node.js,所以它傾向于創(chuàng)建大型應(yīng)用。一個簡單的Electron應(yīng)用程序在沒有壓縮的情況下通常體積約120MB。
相比之下,另一個流行的跨平臺框架Flutter的應(yīng)用程序只有5MB大小。此外,因為Electron同時運行多個JavaScript實例,所以它消耗大量RAM和CPU。如您所見,使用Electron既有優(yōu)點也有缺點。
你應(yīng)該使用Electron嗎?
優(yōu)點:
大社區(qū)
受到 Microsoft、Discord、Slack 等的信任
低的學習曲線
允許使用Web生態(tài)系統(tǒng)
集成了 Node . js
缺點:
大 (~120MB) 安裝大小
使用大量的內(nèi)存和CPU
不支持手機
有點不安全,允許用戶輕松查看應(yīng)用程序內(nèi)部
無法在 Node.js FFI 之外集成本機代碼
首先,在Electron背后有一個很大的社區(qū),包括多家公司,這意味著有大量的開源工具、教程等等。你還可以利用Web生態(tài)系統(tǒng)的大部分工具和教程。Electron的學習曲線也很低,因為如果你知道JavaScript,你就知道Electron。另一個優(yōu)勢是Electron直接集成了Node.js,這使得你可以在沙盒之外使用JavaScript的全部功能。
然而,這些優(yōu)點也有一些缺點。首先,Electron 既沉重又緩慢。Electron 應(yīng)用程序的基本大小約為 120MB,并且占用大量 RAM 和 CPU,Electron的RAM消耗量可高達數(shù)百兆字節(jié)。
Electron 的另一個最大缺點是它沒有任何移動支持。您可以將 Electron 應(yīng)用程序部署到 Mac、Windows 和 Linux(不包括 PureOS 等一些發(fā)行版),但不能部署到 IOS 或 Android。對此有一些解決方案,例如使用 Ionic,但其中許多解決方案需要更改大量代碼和工具。
另外,如果你有一個注重安全的應(yīng)用程序,Electron可能不是你最好的選擇。Electron允許用戶通過開發(fā)者工具和ASAR源文件輕松訪問源代碼。當然,同樣的事情也可以用在Web應(yīng)用程序上,但一些桌面框架,如Tauri,使訪問源代碼變得更加困難。
最后,如果你在 Electron 中嘗試使用其他語言來替代 Node.js,你會遇到一些麻煩。您可以使用其他語言,但只能通過 WebAssembly 或 Node.js FFI,這可能很難設(shè)置并降低性能。
正如你所看到的,Electron在很多方面都很好,但在其他方面卻不那么好??偟膩碚f,如果你想在任何地方使用JavaScript,并且不太關(guān)心性能或安全問題,Electron是一個相當不錯的選擇。然而,如果你有任何性能方面的考慮,需要移動支持,或者想要最佳的安全性,你可能不會想使用Electron。
Electron的替代品
Tauri
Electron 和 Tauri 之間有兩個主要區(qū)別。
首先是 Tauri 使用操作系統(tǒng)內(nèi)置的瀏覽器,這大大減少了應(yīng)用程序的大小并可以提高其性能。
第二個是 Tauri 的后端是用 Rust 而不是 Node.js 構(gòu)建的。這使得直接使用 Rust 成為可能,而無需求助于 Node.js FFI 或 WASM。這也使 Tauri 更快,內(nèi)存效率更高。Tauri 應(yīng)用程序可以小到幾兆字節(jié),而且它們的內(nèi)存使用量通常不到 Electron 應(yīng)用程序的一半。
Tauri也可以更安全,因為它混淆了源代碼,并在生產(chǎn)中禁用了開發(fā)者工具。Node.js默認不包括在Tauri中,但你可以添加它。但Tauri仍有缺點。第一個問題是,由于Tauri并不總是使用Chromium,你必須支持多種瀏覽器。
另一個缺點是,Tauri比較新,沒有那么大的社區(qū)。如果你愿意嘗試一項新技術(shù),Tauri是一個很好的選擇。
優(yōu)點:
應(yīng)用程序更小,資源占用更少
更安全
與 Rust 集成
缺點:
部分用戶不會使用 Chrome
較小的社區(qū)
Progressive Web App(PWA)
漸進式Web應(yīng)用程序或PWAs是被大多數(shù)瀏覽器原生支持的逐步增強的Web應(yīng)用程序。
瀏覽器可以在您訪問其網(wǎng)站時檢測 PWA 并顯示安裝它們的提示,而不是打包到可安裝文件中。您還可以從 Microsoft App Store 和 Google Play 等應(yīng)用商店安裝 PWA。
從瀏覽器中安裝是可行的,因為PWA本質(zhì)上是多了一些功能的網(wǎng)站。這意味著用戶可以使用網(wǎng)站的基本功能,如果他們想要更多,他們可以安裝PWA。這就是為什么它們會逐步增強。
創(chuàng)建PWA有許多優(yōu)點。首先,它們很小,由于PWA和你的網(wǎng)站資源一樣大,你可以制作小到幾百KB的完整應(yīng)用程序。
另一個優(yōu)點是,更新PWA和更新網(wǎng)站一樣簡單。你不需要做一個自動更新器,而只需配置緩存軟件,在有更新的時候更新緩存。PWA也很容易分發(fā)到許多不同的平臺,包括所有主要的移動和桌面平臺。
PWA 也有一些缺點。
首先,他們對原生 API 的訪問權(quán)限有限,并且瀏覽器對這些 API 的支持可能會受到限制。其次,F(xiàn)irefox 并不完全支持 PWA。
最后,PWA目前不能以許多常見的形式發(fā)布,盡管在允許PWA被打包成MSIX包等格式方面有很大的進展。如果你想使用未來的Web應(yīng)用程序,想要輕松部署和更新,或者想要移動支持,PWA是一個很好的選擇。
優(yōu)點:
可直接從網(wǎng)站提示安裝
通過應(yīng)用商店輕松分發(fā)
也能自動作為網(wǎng)站使用
非常小(可以小于1MB)
易于更新
支持桌面和移動設(shè)備
缺點:
有限的原生 API 訪問
Firefox 不支持 PWA
難以作為基于文件的安裝程序分發(fā)
總結(jié)
在某些情況下,Electron能會有所幫助。然而,它并不總是最好的工具。這一切都取決于您的應(yīng)用程序的需求和重點。
如果您更喜歡與擁有更大社區(qū)的項目合作,Electron 是一個不錯的選擇。如果您使用 Rust 并想要快速的桌面 Web 應(yīng)用程序,Tauri 非常適合。最后,如果你想快速進入市場、移動支持,并且不想維護你的應(yīng)用程序的兩個版本,PWA 可能會很好地工作。