1. 程式人生 > 其它 >桌面應用程式

桌面應用程式

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