🏗️ 整体架构

Tauri 采用前后端分离架构,核心由三个部分组成:

前端层

React/Vue/Svelte JavaScript/TypeScript
⬇️ IPC

WebView 层 (WRY)

WKWebView WebView2 WebKitGTK
⬇️

Rust 后端

Tao Core Plugins
⬇️

操作系统

macOS Windows Linux

🪟 Tao - 窗口管理

Tao 是跨平台窗口管理库,提供统一的窗口创建和管理 API。

平台后端
macOSCocoa / AppKit
WindowsWin32
LinuxGTK
AndroidJNI
iOSUIKit

主要功能

  • 窗口创建、销毁、状态管理
  • 事件循环和事件处理
  • 菜单栏、系统托盘
  • 窗口装饰、全屏支持

🌐 WRY - WebView 渲染

WRY 是统一的 WebView 接口库,封装各平台的 WebView 实现。

平台WebView引擎
macOS / iOSWKWebViewWebKit
WindowsWebView2Chromium
LinuxWebKitGTKWebKit
AndroidWebViewChromium

优势

  • 使用系统自带 WebView,无需打包渲染引擎
  • 应用体积小,启动快
  • 自动获得系统安全更新

📡 IPC 通信机制

Tauri 使用 JSON-RPC 风格的 IPC 机制:

typescript
// 前端调用 Rust 命令
import { invoke } from '@tauri-apps/api/core';

const result = await invoke('my_command', { arg1: 'value' });
rust
// Rust 后端定义命令
#[tauri::command]
fn my_command(arg1: String) -> Result {
    Ok(format!("Received: {}", arg1))
}

通信方式

  • invoke:前端调用 Rust 命令,支持返回值
  • 事件:双向事件通信
  • 状态:Rust 端状态管理

🔄 进程模型

Tauri 采用多进程架构:

🖥️

主进程

Rust 后端,处理系统调用

🌐

WebView 进程

渲染前端界面

🔧

辅助进程

插件、更新器等