构建跨平台桌面应用选择 Electron 还是 Tauri ?
Electron 和 Tauri 都是用于构建跨平台桌面应用的框架。它们最大的共同点是:都允许开发者使用
「HTML/CSS/JavaScript」 来构建 UI,但它们在架构、性能、安全性、资源使用等方面存在根本性的不同。以下是详细的对比分析:
一、核心思想区别
二、功能与性能对比(细节)
三、示例代码对比:调用本地文件读取功能
1️⃣ Electron 示例:读取本地文件内容(JS + Node)
// preload.js
const fs = require('fs');
const { contextBridge } = require('electron');
contextBridge.exposeInMainWorld('api', {
readFile: (path) => fs.readFileSync(path, 'utf-8')
});
// renderer.js
const content = window.api.readFile('/path/to/file.txt');
console.log(content);
❝⚠️ 若未启用
❞contextIsolation,甚至可以直接在 DOM 中调用require('fs'),安全性较差。
2️⃣ Tauri 示例:调用 Rust 后端读取本地文件
✅ 前端调用
import { invoke } from'@tauri-apps/api/tauri';
asyncfunctionreadFile() {
const content = await invoke('read_file', { path: '/path/to/file.txt' });
console.log(content);
}
✅ Rust 后端命令(src-tauri/src/main.rs)
#[tauri::command]
fnread_file(path: String) -> Result<String, String> {
std::fs::read_to_string(path).map_err(|e| e.to_string())
}
✅ 注册命令(main 函数)
fnmain() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![read_file])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
❝🛡️ Tauri 强制你定义清晰的 API 接口,前端无法随意访问本地文件系统,更安全。
❞
四、UI & 体验:渲染视图和开发体验对比
tauri-plugin-store、updater |
五、总结:你该选择哪一个?
AI编程资讯AI Coding专区指南:
https://aicoding.juejin.cn/aicoding