Electron 是现在跨渠道桌面软件的首选开发结构,Tauri 则是最近出现的一个替代品,企图处理前者的最大痛点:体积臃肿,资源占用高。 作者特意用 Tauri 写了一个桌面运用。本文是他的运用感受,以及两者的全方位比较。

在本文中,我将运用真实世界的运用程序来比较 Electron 和 Tauri:Authme。 Authme 是一个简略的跨渠道双因素身份验证器运用程序,适用于桌面。它不是一个大运用程序,也不是很杂乱,十分合适进行一些比较。您能够在 GitHub 上检查 Electron 运用程序的源代码,Tauri 运用程序也在 GitHub 上。我的方针是 Tauri 运用程序最终会替代 Electron 运用程序。

Electron运用架构

什么是Electron?

Electron 是一个运用 JavaScript、HTML 和 CSS 等 Web 技术创立原生运用程序的结构。它负责处理困难的部分,因而您能够专心于运用程序的中心。如果您能够构建网站,则能够构建桌面运用程序。 -electronjs.org

运用架构

Electron 运用程序是用一般的 HTML 和 JavaScript 编写的。对于款式,我运用 TailwindCSS 和一些自定义 CSS。

Tauri运用架构

什么是Tauri?

Tauri是一个结构,用于为一切主要的桌面渠道构建细小的、快得惊人的二进制文件。开发者能够整合任何能够编译成HTML、JS和CSS的前端结构来构建他们的用户界面。运用程序的后端是一个rust来源的二进制文件,有一个前端能够交互的API。- Tauri GitHub

架构

我的 Tauri 运用程序正在运用更现代的仓库。构建工具是 Parcel,结构是 Svelte,当然还有 TypeScript 而不是 JavaScript。款式是运用 TailwindCSS 完结的。

比较

这不是一个面对面的比较,但运用程序基本上是相同的。

要害点:

1. 安装包

我们在这儿有一个明显的赢家:Tauri。
Tauri 运用程序安装程序约为 2.5MB(!!!),而 Electron 运用程序安装程序约为 85MB。

全包大小:

Tauri vs Electron:真实项目的比较

Tauri vs Electron:真实项目的比较

Tauri 的一个主要优势是:该运用程序被编译为二进制文件,这意味着您有必要是逆向工程专家才干反编译该运用程序。运用 Electron,您能够运用简略的 NPM 命令解压缩运用程序。

如果您的用户具有 Tauri 运用的 webview 的正确运转时,您只需向他们发送一个可执行文件,他们就不用安装任何东西。

2.启动时间

这不是一项科学测验,但运转运用程序并确认启动时间会发生明显的赢家:

  • Tauri: ~ 2 秒
  • Electron: ~ 4 秒

3.性能

这又不是科学测验,仅仅粗略的比较。这些测验来自我的 PC:i5-4570 CPU、16GB RAM、GTX 1660 和 Windows 11
Tauri (Windows)

Tauri vs Electron:真实项目的比较

Electron (Windows)

Tauri vs Electron:真实项目的比较

老实说,我对 Tauri 的希望更高,当然它运用的 RAM 更少,但不会太多。让我们看一下 Linux 方面的状况。

Tauri

Tauri vs Electron:真实项目的比较

Electron

Tauri vs Electron:真实项目的比较

哇,这对 Tauri 来说是一个巨大的成功!

4.运用后端

现在,Tauri 的缺陷之一出现了(或许说它最大的长处,我想这取决于你)。在您的 Electron 运用程序中,您运用 JavaScript 编写运用程序后端,因为 Electron 运用 Node.js 运转时。另一方面,Tauri 是用 Rust 编写的。现在,如果您了解 Rust,您可能会很快乐,但如果您有必要从头开始学习 Rust(像我相同),您将面对一些问题。

你有必要用Rust重写你的运用程序的后端,所以我以为这儿的赢家是Electron。就现在而言。Tauri的路线图上有其他的后端绑定方式,如Python、C++或Deno。就我个人而言,我很期待Deno的集成,这样我就能够再次用JavaScript/TypeScript来写我的运用后端了。

5.烘托你的运用

Electron 在后台运用 Chromium,因而您的用户在 Windows、Linux 和 macOS 上看到的内容相同。另一方面,Tauri 运用体系 webview:Windows 上的 Edge Webview2 (Chromium)、Linux 上的 WebKitGTK 和 macOS 上的 WebKit。现在欠好的部分来了,如果你是一个 Web 开发人员,你知道 Safari(根据 WebKit)总是落后于每个 Web 浏览器。总是有一个过错,你没有从Chrome浏览器中看到,只有你亲爱的Safari用户。同样的问题也存在于Tauri中,并且你不能对它做什么,你有必要包括polyfills。在这儿,赢家有必要是Electron。

我在开发 Tauri 时遇到的一个问题是我的 CSS 包不包括 -webkit 前缀,所以我的运用程序的 CSS 有许多过错。

6.安全

Tauri 默许状况下十分安全,另一方面,我不能对 Electron 说同样的话。 Tauri 默许内置了许多安全功能。您甚至能够显式启用或禁用某些 API。运用 Electron,您能够完全访问 Node API,因而黑客能够轻松运用十分强壮的 Node API。 Tauri 不是这种状况,您有必要显式公开 Rust 函数。

7.自动更新

在 2022 年发布没有自动更新的运用程序是不行的。如果您的用户有必要手动下载每个更新,我以为他们不会快乐。 Electron 和 Tauri 都有一个内置的自动更新程序,但 Tauri 更简略。在Electron中,我想大多数人都运用electron-updater。在Tauri中,你能够运用内置的,缺陷是你有必要保护自己的更新服务器,或许你能够运用一个简略的JSON文件,你有必要手动更新。Electron更新器从GitHub发布的二进制文件中提取,这要便利得多。

8.开发者经验

在 Tauri 中,您只需安装 Tauri CLI 即可取得整个软件包:热重载、为一切渠道构建运用程序、生成运用程序图标。 Electron 没有给你任何东西,仅仅结构自身。您现已设置了热重载、捆绑您的运用程序等…… Tauri 会为您处理一切。最好的来了:Tauri 与地球上的每个 Web 结构都兼容,它只需要一个 localhost url 或一切捆绑代码所在的文件夹。

总结

Electron正在被替代?是的,Tauri要好得多,但它依然错过了许多。几年后,我信任Tauri团队会赶上Electron的运用。我感到兴奋的是。Deno作为后端,更好的自动更新和iOS/Android支持。


原文:www.levminer.com/blog/tauri-…