Tauri 是一个使用 Web 技术(HTML、CSS、JavaScript)和 Rust 后端来构建安全、轻量级、跨平台的桌面应用程序的框架。本文档提供了 Tauri 框架架构、其核心组件以及它们之间如何交互的技术概述。
Tauri 使开发者能够创建具有 Web 前端的桌面应用程序,同时利用 Rust 的性能和安全性。与 Electron 为每个应用程序都打包 Chromium 不同,Tauri 使用操作系统的原生 Webview,从而显著减小了应用程序的大小并提高了性能。
主要功能包括
来源: README.md12-40 crates/tauri-runtime-wry/src/lib.rs5-8
Tauri 架构遵循分层方法
来源: crates/tauri/Cargo.toml1-45 crates/tauri-runtime-wry/src/lib.rs10-50 crates/tauri-cli/Cargo.toml1-20
runtime 是一个核心抽象,它使 Tauri 能够使用通用接口在不同平台之间工作,同时委托给特定于平台的实现。
Runtime trait 定义了应用程序生命周期、窗口管理和事件处理的接口。主要的 runtime 实现是 Wry,它使用 wry Webview 引擎和 tao 窗口库。
来源: crates/tauri-runtime-wry/src/lib.rs18-31 crates/tauri-runtime-wry/src/lib.rs84-87
App struct 代表主应用程序实例,而 AppHandle 则提供了一种更轻量级的方式来与代码的各个部分进行应用程序状态的交互。
App:拥有事件循环,并负责应用程序的生命周期AppHandle:一个可克隆的引用,用于在不拥有事件循环的情况下访问应用程序功能这种模式允许从任何线程与应用程序进行通信,这对于命令、插件和后台任务特别有用。
来源: crates/tauri/src/webview/mod.rs39-41
Tauri 的窗口和 Webview 系统允许创建、管理和交互承载 Webview 的窗口。
Window:代表一个平台窗口Webview:代表窗口内的 WebviewWebviewWindow:结合了窗口和 Webview(最常见的用例)Webview 系统支持多个窗口、自定义初始化脚本、URL 处理和 DOM 操作。
来源: crates/tauri/src/webview/mod.rs8-11 crates/tauri/src/webview/webview_window.rs5-7
IPC 系统通过多种机制实现 JavaScript 前端和 Rust 后端之间的通信
命令是从 JavaScript 执行 Rust 代码的主要方式
invoke('command_name', payload)#[command] 标注的 Rust 函数事件系统提供了一个发布/订阅机制
通道提供双向流通信
来源: crates/tauri/src/ipc/channel.rs1-6 crates/tauri/src/webview/mod.rs30-42 packages/api/src/window.ts6-17
来源: crates/tauri-runtime-wry/src/lib.rs242-282 crates/tauri/src/webview/webview_window.rs49-55
Tauri 的配置系统基于 tauri.conf.json 文件(或 TOML/JSON5 变体),该文件定义了应用程序设置
配置控制
来源: crates/tauri-schema-generator/schemas/config.schema.json1-10 crates/tauri-utils/src/config.rs1-17 examples/api/src-tauri/tauri.conf.json1-20
Tauri CLI 提供开发和构建命令
tauri dev:启动开发服务器,监视更改并运行应用程序tauri build:构建前端,编译 Rust 后端,并打包应用程序打包器创建特定于平台的包
来源: crates/tauri-cli/Cargo.toml35-37 crates/tauri-bundler/Cargo.toml1-19 examples/api/package.json6-11
@tauri-apps/api 包提供了与 Tauri 核心交互的 JavaScript 绑定
| 模块 | 描述 |
|---|---|
app | 应用程序信息和生命周期 |
cli | 命令行参数处理 |
dialog | 原生文件和消息对话框 |
event | 用于发布/订阅通信的事件系统 |
fs | 文件系统操作 |
http | 用于网络请求的 HTTP 客户端 |
notification | 原生系统通知 |
os | 操作系统信息 |
path | 路径操作工具 |
process | 进程管理和子进程 |
shell | 打开外部 URL 和执行命令 |
updater | 应用程序更新处理 |
window | 窗口操作 |
这些 API 被前端用来与 Rust 后端通信和访问平台功能。
来源:packages/api/package.json1-10 packages/api/src/window.ts1-18 packages/api/src/webview.ts1-18
Tauri 实现了多项安全功能
安全模型旨在遵循最小权限原则,允许开发者明确定义其应用程序所需的功能。
来源:examples/api/src-tauri/tauri.conf.json16-38 crates/tauri-utils/src/config.rs50-68
Tauri 支持通过插件以模块化的方式扩展功能
这种可扩展的架构允许开发者在不修改核心框架的情况下添加功能。
来源:examples/api/src-tauri/tauri.conf.json40-75 crates/tauri/src/webview/plugin.rs1-4
刷新此 Wiki
最后索引时间2025年4月17日(85b191)