Tauri 桌面开发
问题
Tauri 是什么?它与 Electron 相比有什么优势?
答案
Tauri 是用 Rust 构建的桌面应用框架,使用系统 WebView 而非捆绑 Chromium,带来极小的体积和更好的性能。
关于 Electron 和 Tauri 的详细对比,可参考 Electron 桌面开发 和 Tauri 桌面开发。
Tauri vs Electron
| 维度 | Electron | Tauri |
|---|---|---|
| 后端语言 | Node.js | Rust |
| 渲染引擎 | 捆绑 Chromium | 系统 WebView |
| 应用体积 | ~150MB | ~3MB |
| 内存占用 | ~150MB+ | ~30MB |
| 安全模型 | 手动管理 | 权限系统 |
| 前端框架 | 任意 | 任意 |
| 生态成熟度 | 成熟 | 快速成长 |
Tauri 2.0 架构
Rust 后端命令
src-tauri/src/lib.rs
use tauri::command;
// 定义一个可从前端调用的命令
#[command]
fn greet(name: &str) -> String {
format!("Hello, {}! From Rust 🦀", name)
}
// 注册命令
fn main() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running app");
}
前端调用
import { invoke } from '@tauri-apps/api/core';
const result = await invoke<string>('greet', { name: 'World' });
console.log(result); // "Hello, World! From Rust 🦀"
常见面试问题
Q1: Tauri 用系统 WebView 有什么问题?
答案:
优势:体积小(不捆绑 Chromium) 问题:
- 不同平台的 WebView 版本不同(Windows 的 WebView2 vs macOS 的 WKWebView)
- CSS/JS 兼容性差异(需要更多测试)
- Windows 7/8 需要额外安装 WebView2 Runtime
Electron 捆绑 Chromium 的优势就是一致性——所有平台行为相同。
Q2: 什么时候选 Tauri 而非 Electron?
答案:
选 Tauri:体积敏感、性能要求高、安全要求高、团队有 Rust 能力 选 Electron:需要最大浏览器兼容性、依赖 Node.js 生态、团队纯 JS 栈