桌面應用程式
阿新 • • 發佈:2022-05-31
如果您正在嘗試使用 JavaScript 來構建桌面應用程式,那麼您可能至少考慮過使用 Electron。Electron 於 2013 年由 GitHub 為其 Atom 編輯器釋出,已被微軟、Discord 和 Slack 等許多大型公司使用。本文旨在客觀地概述 Electron 及其優缺點。本文還概述了一些替代方案以及您是否希望使用它們。
2013 年,GitHub 試圖製作一個新的、時尚的編輯器,稱為 Atom。他們還想使用Web技術來構建它。不幸的是,當時並沒有那麼多使用 Web 技術構建應用程式的好工具。嵌入瀏覽器的方法很少,而且很多都沒有很好地構建。GitHub 決定為此構建自己的工具並將其命名為 Atom-Shell。它發展迅速,即使 Atom 受到 VS Code 的重創。後來改名為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既有優點也有缺點。
你應該使用Electron嗎?
優點:
大社群
受到 Microsoft、Discord、Slack 等的信任
低的學習曲線
允許使用Web生態系統
集成了 Node . js
缺點:
大 (~120MB) 安裝大小
使用大量的記憶體和CPU
不支援手機
有點不安全,允許使用者輕鬆檢視應用程式內部
無法在 Node.js FFI 之外整合本機程式碼
首先,在Electron背後有一個很大的社群,包括多家公司,這意味著有大量的開源工具、教程等等。你還可以利用Web生態系統的大部分工具和教程。Electron的學習曲線也很低,因為如果你知道JavaScript,你就知道Electron。另一個優勢是Electron直接集成了Node.js,這使得你可以在沙盒之外使用JavaScript的全部功能。
然而,這些優點也有一些缺點。首先,Electron 既沉重又緩慢。Electron 應用程式的基本大小約為 120MB,並且佔用大量 RAM 和 CPU,Electron的RAM消耗量可高達數百兆位元組。
Electron 的另一個最大缺點是它沒有任何移動支援。您可以將 Electron 應用程式部署到 Mac、Windows 和 Linux(不包括 PureOS 等一些發行版),但不能部署到 IOS 或 Android。對此有一些解決方案,例如使用 Ionic,但其中許多解決方案需要更改大量程式碼和工具。
另外,如果你有一個注重安全的應用程式,Electron可能不是你最好的選擇。Electron允許使用者通過開發者工具和ASAR原始檔輕鬆訪問原始碼。當然,同樣的事情也可以用在Web應用程式上,但一些桌面框架,如Tauri,使訪問原始碼變得更加困難。
最後,如果你在 Electron 中嘗試使用其他語言來替代 Node.js,你會遇到一些麻煩。您可以使用其他語言,但只能通過 WebAssembly 或 Node.js FFI,這可能很難設定並降低效能。
正如你所看到的,Electron在很多方面都很好,但在其他方面卻不那麼好。總的來說,如果你想在任何地方使用JavaScript,並且不太關心效能或安全問題,Electron是一個相當不錯的選擇。然而,如果你有任何效能方面的考慮,需要移動支援,或者想要最佳的安全性,你可能不會想使用Electron。
Electron的替代品
Tauri
Electron 和 Tauri 之間有兩個主要區別。
首先是 Tauri 使用作業系統內建的瀏覽器,這大大減少了應用程式的大小並可以提高其效能。
第二個是 Tauri 的後端是用 Rust 而不是 Node.js 構建的。這使得直接使用 Rust 成為可能,而無需求助於 Node.js FFI 或 WASM。這也使 Tauri 更快,記憶體效率更高。Tauri 應用程式可以小到幾兆位元組,而且它們的記憶體使用量通常不到 Electron 應用程式的一半。
Tauri也可以更安全,因為它混淆了原始碼,並在生產中禁用了開發者工具。Node.js預設不包括在Tauri中,但你可以新增它。但Tauri仍有缺點。第一個問題是,由於Tauri並不總是使用Chromium,你必須支援多種瀏覽器。
另一個缺點是,Tauri比較新,沒有那麼大的社群。如果你願意嘗試一項新技術,Tauri是一個很好的選擇。
優點:
應用程式更小,資源佔用更少
更安全
與 Rust 整合
缺點:
部分使用者不會使用 Chrome
較小的社群
Progressive Web App(PWA)
漸進式Web應用程式或PWAs是被大多數瀏覽器原生支援的逐步增強的Web應用程式。
瀏覽器可以在您訪問其網站時檢測 PWA 並顯示安裝它們的提示,而不是打包到可安裝檔案中。您還可以從 Microsoft App Store 和 Google Play 等應用商店安裝 PWA。
從瀏覽器中安裝是可行的,因為PWA本質上是多了一些功能的網站。這意味著使用者可以使用網站的基本功能,如果他們想要更多,他們可以安裝PWA。這就是為什麼它們會逐步增強。
建立PWA有許多優點。首先,它們很小,由於PWA和你的網站資源一樣大,你可以製作小到幾百KB的完整應用程式。
另一個優點是,更新PWA和更新網站一樣簡單。你不需要做一個自動更新器,而只需配置快取軟體,在有更新的時候更新快取。PWA也很容易分發到許多不同的平臺,包括所有主要的移動和桌面平臺。
PWA 也有一些缺點。
首先,他們對原生 API 的訪問許可權有限,並且瀏覽器對這些 API 的支援可能會受到限制。其次,Firefox 並不完全支援 PWA。
最後,PWA目前不能以許多常見的形式釋出,儘管在允許PWA被打包成MSIX包等格式方面有很大的進展。如果你想使用未來的Web應用程式,想要輕鬆部署和更新,或者想要移動支援,PWA是一個很好的選擇。
優點:
可直接從網站提示安裝
通過應用商店輕鬆分發
也能自動作為網站使用
非常小(可以小於1MB)
易於更新
支援桌面和移動裝置
缺點:
有限的原生 API 訪問
Firefox 不支援 PWA
難以作為基於檔案的安裝程式分發
總結
在某些情況下,Electron能會有所幫助。然而,它並不總是最好的工具。這一切都取決於您的應用程式的需求和重點。
如果您更喜歡與擁有更大社群的專案合作,Electron 是一個不錯的選擇。如果您使用 Rust 並想要快速的桌面 Web 應用程式,Tauri 非常適合。最後,如果你想快速進入市場、移動支援,並且不想維護你的應用程式的兩個版本,PWA 可能會很好地工作