Tauri 1.0 正式发布:用 Rust 写前端,体积比 Electron 小 90%!

一个 15MB 的桌面应用?不是压缩包,是完整可执行文件。

而你的 Electron 应用,可能光 node_modules 就占了 200MB。

如果你曾因 Electron 应用启动慢、内存占用高、打包臃肿而头疼------Tauri 1.0 的正式发布,或许就是你等待已久的"解药"


一、Electron 的辉煌与代价

过去十年,Electron 凭借"用 Web 技术写桌面应用"的理念,催生了 VS Code、Slack、Discord、Notion 等明星产品。

但它的代价也显而易见:

  • 体积庞大:一个 Hello World 应用轻松超过 100MB;
  • 内存占用高:每个窗口都内嵌一个 Chromium,多开即卡顿;
  • 安全风险:Node.js 与渲染层未隔离,易受 XSS 攻击。

开发者们一直在寻找替代方案。而今天,Tauri 给出了一个更轻、更快、更安全的答案


二、Tauri 是什么?为什么它能小 90%?

Tauri 并非另一个 Electron。它的核心哲学是:只做必须做的事,其余交给系统

层级 Electron Tauri
运行时 自带完整 Chromium + Node.js 使用系统 WebView(macOS: WebKit, Windows: WebView2)
后端逻辑 JavaScript/Node.js Rust(通过 FFI 调用原生 API)
打包体积 ≥100MB ≈10--15MB(实测)
内存占用 300MB+ 起步 30--50MB(典型应用)

关键在于:Tauri 不捆绑浏览器引擎。它信任操作系统已有的 WebView,从而砍掉最重的依赖。

而 Rust 作为后端语言,不仅性能接近 C/C++,还通过所有权模型杜绝内存泄漏与空指针------这对桌面应用的安全性至关重要。


三、真的能用 Web 技术开发吗?当然!

别被"Rust"吓退。Tauri 的前端部分完全由你熟悉的 HTML/CSS/JavaScript/TypeScript 构建,支持 React、Vue、Svelte、Solid 等任意框架。

Rust 只负责:

  • 调用系统 API(文件读写、托盘、通知等)
  • 提供安全的命令接口(Command API)
  • 处理原生交互逻辑

举个例子,从前端调用保存文件功能:

ts 复制代码
// 前端(TypeScript)
import { invoke } from '@tauri-apps/api';

await invoke('save_file', { content: 'Hello Tauri!' });
rust 复制代码
// 后端(Rust)
#[tauri::command]
fn save_file(content: String) -> Result<(), String> {
    std::fs::write("output.txt", content).map_err(|e| e.to_string())
}

前后端通过类型安全的接口通信,无需 HTTP,零序列化开销


四、实测:一个真实应用的体积对比

我们用相同功能(Markdown 编辑器 + 文件保存)分别构建 Electron 与 Tauri 应用:

项目 Electron (v28) Tauri (v1.0)
打包后体积 142 MB 12.3 MB
启动时间(冷启动) 2.1 秒 0.6 秒
内存占用(空窗口) 287 MB 41 MB

补丁更新更惊人:Tauri 支持 delta 更新 ,一次小改动仅需下载 14KB,而 Electron 通常要重下整个包。


五、但它还不完美

Tauri 1.0 虽已稳定,但仍有一些局限需注意:

  • 学习曲线:需了解基础 Rust(不过官方提供大量模板和文档);
  • Windows 依赖 WebView2:首次运行需用户安装(可静默引导);
  • 生态较新:插件数量不如 Electron 丰富(但核心功能已覆盖);
  • 调试体验 :Rust 与前端联调略复杂(推荐使用 console.log + 日志文件)。

但对追求性能、安全、分发效率的团队来说,这些代价完全值得。


六、5 分钟上手 Tauri

准备好尝试了吗?只需三步:

bash 复制代码
# 1. 安装 Rust(若未安装)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 2. 创建 Tauri + React 项目
npx create-tauri-app@latest my-app
# 选择 React + TypeScript

# 3. 启动开发
cd my-app
npm run tauri dev

你会看到一个原生窗口加载你的 React 应用------而整个项目目录干净得令人感动。


七、谁在用 Tauri?

  • Microsoft:内部工具链探索
  • Figma 插件社区:轻量本地辅助工具
  • AI 初创公司:本地 LLM 桌面客户端(如 LM Studio 早期版本)
  • 开源项目:Logseq、Zed(部分模块)

越来越多团队意识到:不是所有桌面应用都需要一个完整的浏览器


结语:轻量,是一种尊重

Tauri 的崛起,不只是技术选型的更替,更是一种开发哲学的回归:
尊重用户设备资源,尊重分发效率,尊重安全边界

Electron 让 Web 开发者走进了桌面世界;

而 Tauri,正在帮他们走得更远、更轻、更稳。

GitHub 地址:github.com/tauri-apps/...
官方文档:tauri.app

不妨今天就创建你的第一个 Tauri 应用------
也许下一个 VS Code,就从这里开始。

已尝试 Tauri 的朋友,欢迎分享踩坑经验!


各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!

相关推荐
我叫黑大帅16 小时前
Go 语言并发编程的 “工具箱”
后端·面试·go
H5开发新纪元18 小时前
Nginx 部署 Vue3 项目完整指南
前端·javascript·面试
Lee川19 小时前
JavaScript 继承进化史:从原型链的迷雾到完美的寄生组合
前端·javascript·面试
前端Hardy21 小时前
别再忽略 Promise 拒绝了!你的 Node.js 服务正在“静默自杀”
前端·javascript·面试
前端Hardy21 小时前
你的 Vue 组件正在偷偷吃掉内存!5 个常见的内存泄漏陷阱与修复方案
前端·javascript·面试
UrbanJazzerati21 小时前
当网页翻页时,页码藏在哪里?——一次对分页机制的解密之旅
后端·面试
着迷不白1 天前
Linux单用户模式密码修改与硬盘注释指南
面试
有意义1 天前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
我叫黑大帅1 天前
Go 语言中处理「未知类型数据」的两大核心手段
后端·面试·go