iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
Modern Web

從 0 到 1:30 篇文章帶你玩轉 Electron 與 React系列 第 20

Electron:便利性與資源佔用之間的平衡

  • 分享至 

  • xImage
  •  

今天再來聊聊 Electron 比較多人討論的議題,關於資源佔用以及效能的問題,就當輕鬆一下~

Electron 作為一個流行的跨平台開發框架,已經成為許多應用的首選,特別是在那些需要同時支持 Windows、macOS 和 Linux 系統的場景中。它讓開發者可以使用熟悉的 Web 技術(HTML、CSS 和 JavaScript)來構建桌面應用,並且只需編寫一次程式碼,就可以在多個平台上運行。然而,隨著 Electron 應用越來越普及,一個長期爭論的話題也隨之而來:便利性與資源佔用之間的平衡。

在這篇文章中,我們將探討 Electron 應用為什麼會帶來高便利性的同時,也常被批評為資源密集型,並分析為什麼這樣的技術取捨依然對許多開發者和使用者來說是可接受的。

便利性:一次開發,跨平台部署

Electron 的最大優勢無疑是它的便利性。開發者可以使用熟悉的 Web 技術來構建應用,而無需學習原生桌面開發的特定語言(如 C++、Objective-C 或 Swift)。這帶來了巨大的效率提升,特別是對那些希望快速推出產品的開發團隊而言。

跨平台兼容

Electron 允許開發者只需編寫一套程式碼,就能在多個平台上運行應用,無需為每個操作系統編寫獨立的版本。這對於小型團隊和初創公司尤其有吸引力,因為他們不再需要投入大量資源在不同平台的開發上。

快速開發迭代

由於 Electron 應用的核心技術是基於 Web 的,開發者可以使用豐富的 JavaScript 生態系統,這使得開發速度顯著加快。各種工具和 library 可以輕鬆整合進應用中,而這些工具在傳統的原生桌面開發中可能並不存在。此外,使用 JavaScript 進行快速迭代和調試,也使得應用的更新和維護變得更為簡單。

與現代工具的無縫整合

使用者往往對於熟悉的界面和功能有依賴,而 Electron 可以輕鬆與 Web 技術無縫集成,從而快速引入現代的 UI 設計、動畫效果、響應式界面等功能,這在傳統的桌面應用中可能需要更多的開發工作。

資源佔用:便利的代價

儘管 Electron 提供了便利性,但它也因其較高的資源佔用而飽受批評。記憶體佔用大、CPU 使用高 以及 應用啟動緩慢 等問題經常被提出。這些問題不僅影響應用的性能,還會讓使用者對其流暢度產生質疑。

重複的 Chromium 和 Node.js 實例

每一個 Electron 應用內部都包含了一個完整的 Chromium 瀏覽器 和 Node.js 執行環境。這意味著,每個 Electron 應用在運行時實際上就像是一個迷你版的 Chrome 瀏覽器在運行,而不是一個輕量的原生應用。這種架構的直接結果就是資源佔用變得更高,特別是當使用者同時打開多個 Electron 應用時,這種效果更加顯著。

記憶體佔用與多視窗

當一個 Electron 應用運行多個視窗時,實際上每個視窗都可能是一個獨立的 Chromium 實例,這使得記憶體佔用量迅速增加。與此同時,所有這些視窗還會共享同一個主程序,這導致程序之間的資源爭奪更加劇烈。

啟動速度與響應時間

由於需要載入完整的 Chromium 和 Node.js 環境,Electron 應用的啟動速度相比傳統的原生應用通常較慢。儘管對於小型應用來說這個問題可能不明顯,但對於大型應用(如 Slack 或 Visual Studio Code)來說,使用者可能會感覺到啟動和載入的延遲。

使用者是否在意資源佔用?

儘管 Electron 應用資源佔用高的問題被技術社群反覆提及,但實際上這是否是大多數使用者關心的問題?答案可能因場景而異。

硬體性能的進步

隨著現代硬體的快速發展,許多設備,特別是高端筆記型電腦和桌面電腦,已經具備了強大的處理能力和記憶體資源。這使得對於大部分使用者來說,Electron 應用的資源佔用問題變得不再那麼明顯或重要。對於許多使用者來說,能夠跨平台、穩定且快速獲得新功能,往往比應用本身的資源佔用問題更為關鍵。

使用者體驗的重要性

使用者通常更加關心應用的功能和易用性。如果一個 Electron 應用能夠提供一致的使用體驗,且與他們熟悉的 Web 應用無縫結合,那麼使用者很可能不會在意背後的技術架構。同時,許多流行的 Electron 應用都已經通過不斷優化,讓資源佔用問題在使用中不那麼明顯。

多應用並行運行的需求

當使用者同時運行多個 Electron 應用時,記憶體佔用問題可能會變得更加明顯,特別是在低端設備上。這是一些使用者對 Electron 產生抱怨的主要原因之一。然而,對於那些只運行少數幾個應用的使用者來說,這種情況可能很少出現,從而感受不到資源佔用的問題。

優化 Electron 應用的資源佔用

儘管 Electron 的架構導致其天生有資源佔用較高的特性,但開發者可以採取多種措施來減少這些問題。透過正確的優化,開發者可以讓 Electron 應用既保留其便利性,又儘可能減少資源的浪費。

減少主程序的負擔

將計算密集型的操作轉移到 渲染程序 或使用 Worker Threads 來處理後台任務,可以有效減少主程序的負擔,讓應用運行更加流暢。

懶載入功能

懶載入(Lazy Loading)技術可以幫助 Electron 應用在啟動時僅載入最必要的資源,而將不常用的模組和功能延遲到需要時再載入。這樣可以加快應用的啟動速度,減少不必要的資源佔用。

使用多程序架構

通過正確的程序架構設計,將不同的功能模組放入不同的程序中執行,避免單一程序過度佔用系統資源。這樣不僅可以提高應用的效率,還能讓應用的不同部分相互隔離,防止一個部分的問題影響整個應用。

便利與資源:取得平衡的藝術

最終,Electron 的成功歸因於它在便利性和資源佔用之間找到了合理的平衡點。對於開發者來說,能夠快速構建並跨平台發佈應用,是一個巨大的優勢。對於大多數使用者來說,他們往往更關心應用的功能和體驗,而不是應用背後的技術實現方式。

隨著硬體性能的提升和 Electron 本身的不斷優化,資源佔用問題正在逐步減弱,而其便利性則成為主流應用開發中不可忽視的優勢。對於那些希望在多平台快速推出應用的開發者來說,Electron 仍然是一個值得選擇的工具。

結論:

儘管資源佔用是 Electron 的一個挑戰,但它所帶來的跨平台便利性和快速開發迭代能力,讓許多開發者和使用者願意接受這個折衷。未來,隨著技術的進一步發展,這種平衡將變得更加成熟和合理。


上一篇
中場休息:聊聊 Electron 中的性能優化策略
下一篇
思考:跨平台開發的挑戰與解決方案
系列文
從 0 到 1:30 篇文章帶你玩轉 Electron 與 React30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言