」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Tauri 與 Electron:技術比較

Tauri 與 Electron:技術比較

發佈於2024-07-30
瀏覽:833

Tauri vs. Electron: A Technical Comparison

对于桌面应用程序开发中的 Web 技术,最有前途的两个游戏参与者是 Tauri 和 Electron。值得注意的是,每个项目都旨在提供使用 Web 技术构建跨平台桌面应用程序的工具,但与此同时,它们的实现方式却截然不同。本文将尝试从架构、性能、安全性、开发经验、社区支持等方面详细阐述 Tauri 和 Electron 的技术比较。

1. 架构

电子架构:

核心组件: Electron 是开源 Web 渲染引擎 Chromium 和开源 JavaScript 运行时 Node.js 的组合。它生成的运行时具有通过 Web 技术开发桌面 GUI 的所有功能。

进程模型: Electron 应用程序运行一个名为主进程的 Node.js 进程。该进程管理应用程序中的生命周期事件,并且可以生成多个渲染器进程(每个应用程序窗口一个)来处理 GUI。
捆绑:由于 Electron 捆绑了整个 Chromium 和 Node.js,因此应用程序的规模往往相对较大。

金牛座架构:

核心组件: Tauri 是一个相当轻量级的框架;它仅使用操作系统的 webview 组件(在 Windows 上使用 WebView2、在 macOS 上使用 WKWebView、在 Linux 上使用 WebKitGTK)来渲染 UI,并利用 Rust 来实现后端逻辑。

流程模型: Tauri 将前端(在 Web 视图中运行)与后端(用 Rust 编写)分开,提高了安全性和性能。

捆绑: Tauri 应用程序使用的本机 webview 组件意味着与捆绑完整浏览器引擎的应用程序相比,它们的捆绑包要小得多。

2. 性能

电子:

内存使用: 由于捆绑的 Chromium 引擎和运行多个进程的开销,Electron 应用程序往往会消耗更多内存。

启动时间: Electron 应用程序的启动时间往往很慢,因为它首先必须启动整个 Chromium 引擎。

运行时性能: 由于 Chromium 引擎有时占用大量资源,Electron 应用程序有时运行效率较低。情况就是如此,尤其是对于具有许多 UI 组件或复杂渲染需求的应用程序。

金牛座:

内存使用: Tauri 应用程序通常消耗少量内存,因为它由本机 webview 和轻量级 Rust 后端提供支持。

启动时间: 一般来说,Tauri 应用程序由于较小的应用程序大小和使用原生 webview 组件,启动速度会更快。

运行时性能:因此,Tauri 将能够利用 Rust 在安全方面的性能和功能,使其在资源有限的环境中发挥强大的作用。需要高性能的应用。

3. 安全性

电子:

沙箱: 虽然 Electron 渲染器进程被沙箱化,但主进程具有对系统的完全访问权限,如果处理不当,会带来一些安全问题。

漏洞面: 完整的 Chromium 引擎增加了攻击面。这使得针对新发现的漏洞频繁更新和升级势在必行。

IPC(进程间通信): 必须谨慎地实现进程间通信模型,以使主进程和渲染进程能够安全地通信,而不会出现任何安全故障。

金牛座:

沙箱: Tauri 沙箱的架构将 webview/UI 与后端/逻辑分开。这本质上降低了安全漏洞的风险。

漏洞面: 与构建和捆绑的整个浏览器引擎相比,漏洞面较低,因为它使用系统中的本机 webview 组件。

IPC: Tauri 拥有更安全的进程间通信机制,这要归功于 Rust 强大的类型和内存安全保证,降低了安全问题的风险。

4. 开发经验

电子:

生态系统: Electron 拥有成熟的生态系统,拥有丰富的文档、无数的插件和大量社区开发的模块。

工具: 用于 Web 开发的共享工具和库使开发人员的工作变得更轻松。

调试: Chrome DevTools 等工具与 Electron 捆绑在一起,而且调试起来非常容易。

金牛座:

生态系统: Tauri 是一个生态系统,每天都在围绕它成长;支持和文档也在日益增加,但仍处于早期阶段。我们可以将其与 Electron 生态系统的早期版本进行比较。

工具: Tauri 与当今的现代 Web 开发工具有很好的集成,并且它的 Rust 后端可以使用 Rust 强大的工具进行管理。

调试: 调试技术包括 webview 调试工具和 Rust 调试工具,它们本质上更丰富,但有时设置起来更复杂。

5. 社区支持

电子:

采用率: 与其他许多知名应用程序(Slack、Visual Studio Code、Discord)相比,Electron 的采用率很高。

社区: Electron 周围庞大而活跃的社区形成了一个强大的支持网络,具有频繁的更新和大量第三方资源。

金牛座:

采用: Tauri 较新,但由于其轻便性和带来的安全优势,正在迅速被采用。

社区:Tauri的社区规模随着新贡献的增多而不断扩大;事实上,该项目非常活跃,但肯定没有 Electron 项目那么大。

结论:

根据项目的必要性和限制在 Tauri 和 Electron 之间进行选择:

Electron 将适合那些以成熟的生态系统、常见的 Web 开发实践、全面使用 JavaScript 和广泛的社区支持为目标的开发人员。然而,上述优点会导致较高的内存消耗和应用程序大小。

Tauri — 当您通过充分利用 Rust 和本机 webview 组件来关心性能、安全性和小型应用程序大小时使用。生态系统正在快速发展,但如果开发人员不熟悉 Rust,可能需要更大的学习曲线。
这两个框架都可以提供良好的跨平台桌面应用程序,最佳选择将取决于您的项目的优先级和开发团队的专业知识。

版本聲明 本文轉載於:https://dev.to/vorillaz/tauri-vs-electron-a-technical-comparison-5f37?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • FCS API 與 Insight Ease:比特幣 API 服務的簡單比較
    FCS API 與 Insight Ease:比特幣 API 服務的簡單比較
    如果您熱衷於比特幣 API,那麼選擇正確的 API 非常重要。特別是如果您是開發人員、金融分析師或經營金融科技公司。您會聽到的兩個流行名稱是 FCS API 和 Insight Ease。但哪一個比較好呢?讓我們仔細觀察它們的比較,特別是當涉及加密貨幣即時匯率 API、加密貨幣 API 交易,甚至...
    程式設計 發佈於2024-11-02
  • 如何在不修改HTML的情況下用JavaScript監聽表單提交事件?
    如何在不修改HTML的情況下用JavaScript監聽表單提交事件?
    在JavaScript 中監聽表單提交事件而不修改HTML在本文中,我們解決了在不修改HTML 的情況下監聽表單提交事件的常見挑戰必須修改HTML 程式碼。我們不依賴 HTML 中的 onClick 或 onSubmit 屬性,而是提供純 JavaScript 解決方案。 為了實現這一點,我們利用 ...
    程式設計 發佈於2024-11-02
  • Document.getElementById 與 jQuery $():主要差異是什麼?
    Document.getElementById 與 jQuery $():主要差異是什麼?
    Document.getElementById vs jQuery $():比較分析深入研究Web 開發領域時,了解一般版本之間的細微差別JavaScript 和jQuery 可能至關重要。本文研究了兩個看似相同的程式碼片段之間的細微差別:var contents = document.getEle...
    程式設計 發佈於2024-11-02
  • 在 Java 中使用方法和變數句柄進行運行時物件存取和操作
    在 Java 中使用方法和變數句柄進行運行時物件存取和操作
    反射和方法/var 句柄是 Java 中的兩個強大功能,允許開發人員在運行時存取和操作物件。然而,它們在存取和處理物件的方式上有所不同。 讓我們來看一個如何使用反射來存取類別中方法的範例。我們將從一個名為「MyClass」的簡單類別開始,它有一個私有字串變數和該變數的 getter 方法。為了創建...
    程式設計 發佈於2024-11-02
  • 如何在 Python 中使用內建函數驗證 IP 位址?
    如何在 Python 中使用內建函數驗證 IP 位址?
    Python 中的 IP 位址驗證驗證 IP 位址的有效性是程式設計中的常見任務。從使用者接收字串形式的 IP 位址時,必須對其進行驗證,以確保它們符合正確的格式和結構。 要在 Python 中有效驗證 IP 位址,請考慮以下方法:無需手動解析 IP 位址,而是利用套接字模組中的內建 inet_at...
    程式設計 發佈於2024-11-02
  • 我需要學習程式設計的幫助
    我需要學習程式設計的幫助
    您好,我是系統工程專業的學生,我覺得我在課程中學到的程式設計知識不多。我想自學,因為我對這個主題非常感興趣。這就是我在這個網站上向了解程式設計的人尋求幫助的原因。如果有人知道學習程式設計的最佳課程,從基礎開始並進步到更專業的水平,那將會有很大的幫助。 我感興趣的語言: Java JavaScrip...
    程式設計 發佈於2024-11-02
  • 如何將 gorm.Model 整合到具有日期時間支援的 Protocol Buffer 定義中?
    如何將 gorm.Model 整合到具有日期時間支援的 Protocol Buffer 定義中?
    將gorm.Model 整合到Protocol Buffer 定義中將gorm.Model 整合到Protocol Buffer 定義中將gorm 的gorm.Model 欄位整合到protobuf 定義時,由於proto3 中缺乏日期時間支持,出現了挑戰。本文探討了此問題的解決方案。 ProtoB...
    程式設計 發佈於2024-11-02
  • 修補您的 Discord 活動的網路請求,以實現順利的 CSP 合規性
    修補您的 Discord 活動的網路請求,以實現順利的 CSP 合規性
    透過Discord運行Discord活動時,您可能會遇到內容安全策略(CSP)問題。您可以透過確保網路請求遵循 Discord 代理 規則來修復這些問題。 這可以手動完成...或者你可以讓@robojs/patch處理它。 什麼是CSP? 內容安全策略 (CSP) 是一種安全標準...
    程式設計 發佈於2024-11-02
  • 推薦項目:刪除課程表查看數據
    推薦項目:刪除課程表查看數據
    LabEx 的這個專案釋放了資料庫管理的力量,提供了在資料庫中建立和操作視圖的全面學習體驗。無論您是嶄露頭角的資料庫管理員還是經驗豐富的開發人員,該專案都提供了寶貴的機會來增強您的技能並獲得對資料管理世界的實際見解。 深入了解基礎知識 在這個專案中,您將踏上了解資料庫中視圖的核心概...
    程式設計 發佈於2024-11-02
  • 模擬網路請求變得容易:整合 Jest 和 MSW
    模擬網路請求變得容易:整合 Jest 和 MSW
    Writing unit tests that involve mocking or stubbing API calls can feel overwhelming—I’ve been there myself. In this article, I’ll guide you through a ...
    程式設計 發佈於2024-11-02
  • 使用 Javascript 的哈希映射
    使用 Javascript 的哈希映射
    介紹 哈希映射(Hash Map),也稱為哈希表(Hash Table),是實現關聯數組抽象資料類型的資料結構,是可以將鍵映射到值的結構。 它使用雜湊函數來計算儲存桶或槽數組的索引,從中可以找到所需的值。 哈希映射的主要優點是它的效率。插入新的鍵值對、刪除鍵值對以及查找給定鍵...
    程式設計 發佈於2024-11-02
  • HTPX 簡介:適用於 JavaScript 和 Node.js 的輕量級多功能 HTTP 用戶端
    HTPX 簡介:適用於 JavaScript 和 Node.js 的輕量級多功能 HTTP 用戶端
    作為開發人員,我們的Web 應用程式通常需要一個可靠且高效的HTTP 用戶端,無論我們是在瀏覽器中使用JavaScript 還是在伺服器端使用Node.js 進行構建。這就是我創建 HTPX 的原因——一個強大的、輕量級的解決方案,旨在簡化 HTTP 請求,同時為現代開發提供一系列功能。 在本文中...
    程式設計 發佈於2024-11-02
  • 使用自然語言透過法學碩士產生簡單的 Python GUI .... 在不到幾分鐘的時間內
    使用自然語言透過法學碩士產生簡單的 Python GUI .... 在不到幾分鐘的時間內
    Thought that building Python GUIs took hours of tedious coding? Welcome to an exciting new era! Not only can tools like Github Copilot help with code ...
    程式設計 發佈於2024-11-02
  • Dev、Oops 和 WEBAPP 故事
    Dev、Oops 和 WEBAPP 故事
    作為 DevOps 專業人員開發桌面 Web 應用程式感覺就像在廣闊而複雜的海洋中航行。隨著技術融合,Web、桌面和基於雲端的應用程式之間的界限變得模糊,迫使 DevOps 深入傳統上由前端佔據的領域 終端開發商。選擇正確的框架變得至關重要,但挑戰往往在於篩選當今可用的眾多選項。例如,Vite、Re...
    程式設計 發佈於2024-11-02
  • 釋放您的 Django 潛力:適合 4 人的專案創意和資源
    釋放您的 Django 潛力:適合 4 人的專案創意和資源
    Django 電子報 - 2024 年 10 月 Django 簡介與專案想法 如果您希望開始使用 Django 或提高自己的技能,請考慮以下一些寶貴的資源和專案想法: Django 專案想法 對於想要嘗試或建立自己的作品集的人來說,Django 提...
    程式設計 發佈於2024-11-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3