本页面详细介绍了 Tauri 代码库中提供的示例和模式,这些示例和模式展示了 Tauri 应用程序开发的最佳实践。这些示例展示了 Tauri 核心功能的实际实现,并为开发 Tauri 应用程序的开发者提供了参考。
有关 Tauri CLI 和应用程序构建的信息,请参阅 构建和打包系统。有关核心 API 实现的详细信息,请参阅 JavaScript API。
Tauri API 示例应用程序是 Tauri 功能的主要验证应用程序。它既能展示功能,也是开发的测试平台。
API 示例应用程序演示了
来源:examples/api/src/views/Welcome.svelte26-40 examples/api/src-tauri/Cargo.toml1-44
图示:API 示例应用架构
来源:examples/api/src-tauri/src/lib.rs1-204 examples/api/src/App.svelte1-352
示例应用程序分为几个视图,每个视图都演示了特定的 Tauri 功能
| 视图 | 目的 | 源文件 |
|---|---|---|
| 欢迎 | 基本应用程序信息和版本显示 | src/views/Welcome.svelte |
| 通信 | JavaScript 和 Rust 之间的 IPC | src/views/Communication.svelte |
| 窗口 | 窗口创建和操作 | src/views/Window.svelte |
| App | 应用程序级 API | src/views/App.svelte |
| 菜单 | 菜单创建和交互 | src/views/Menu.svelte |
| 托盘 | 系统托盘功能 | src/views/Tray.svelte |
| WebRTC | 媒体捕获功能 | src/views/WebRTC.svelte |
来源:examples/api/src/App.svelte53-70
本节重点介绍了 Tauri 示例中展示的关键实现模式,这些模式可作为 Tauri 应用程序开发的最佳实践。
Tauri 应用程序设置模式遵循一致的结构来初始化应用程序、配置功能和管理应用程序生命周期。
图示:Tauri 应用程序初始化模式
来源:examples/api/src-tauri/src/lib.rs33-188 examples/api/src-tauri/src/main.rs1-10
此模式的关键组件包括
main.rs 文件作为入口点,调用 run() 函数tauri::Builder 来配置应用程序.plugin() 方法注册插件invoke_handler() 方法注册命令.build() 方法创建应用程序实例.run() 方法启动事件循环并处理系统事件Tauri 提供了多种 JavaScript 和 Rust 之间通信的模式。
图示:IPC 通信模式
来源:examples/api/src/views/Communication.svelte1-70 examples/api/src-tauri/src/lib.rs129-142
命令模式用于 JavaScript 和 Rust 之间的请求-响应交互
#[tauri::command] 属性定义一个命令函数invoke_handler(tauri::generate_handler!([...])) 注册该命令invoke() 从 JavaScript 调用该命令API 示例应用中的示例
log_operation:演示简单的命令处理perform_request:展示处理复杂数据结构echo:演示从命令返回数据事件模式支持异步通信
listen() 在 JavaScript 或 Rust 中监听事件emit() 从任一端发出事件在示例应用程序中,js-event 和 rust-event 演示了双向事件通信。
通道模式提供了一种基于流的通信方法
new Channel() 在 JavaScript 中创建通道示例应用程序中的 spam 命令演示了此模式。
来源:examples/api/src/views/Communication.svelte49-53
示例应用程序演示了多种窗口管理模式。
图示:窗口管理模式
来源:examples/api/src/views/Window.svelte1-808
关键的窗口管理模式包括
窗口创建:创建具有特定配置的新窗口
窗口属性:设置和更新窗口属性
窗口事件:监听和处理窗口事件
窗口状态:管理窗口状态(最大化、最小化、全屏)
视觉效果:将视觉效果应用于窗口(特定于平台)
示例应用程序演示了创建和管理菜单及系统托盘图标的模式。
图示:菜单和托盘集成
来源:examples/api/src/views/Menu.svelte1-50 examples/api/src/views/Tray.svelte1-80 examples/api/src/components/MenuBuilder.svelte1-46 examples/api/src/components/MenuItemBuilder.svelte1-150
关键模式包括
菜单构建:以编程方式构建菜单
菜单放置:设置菜单出现的位置
托盘图标创建:创建系统托盘图标
菜单项类型:使用不同类型的菜单项
MenuItem:标准的文本菜单项CheckMenuItem:带有选中状态的切换菜单项IconMenuItem:带有图标的菜单项PredefinedMenuItem:系统提供的菜单项示例应用程序演示了如何集成和使用 Tauri 插件。
图示:插件集成模式
来源:examples/api/src-tauri/src/lib.rs42-48 examples/api/src-tauri/src/lib.rs86-98
插件模式的关键方面
插件注册:将插件添加到 Tauri 构建器
插件使用:使用插件的功能
插件扩展特质:通过扩展特质访问插件功能
根据示例应用程序,以下是 Tauri 应用程序开发的一些最佳实践
示例应用程序展示了有效的关注点分离
示例展示了正确的资源生命周期管理
在组件销毁时清理事件监听器
在不再需要时关闭资源
该示例演示了正确的错误处理模式
invoke() 调用中使用 catch 来处理错误该应用程序使用功能检测和渐进增强
该示例优雅地处理了平台差异
使用平台检测
有条件地启用特定于平台的f功能
为每个平台提供适当的 UI
Tauri API 示例应用程序提供了 Tauri 应用程序开发的最佳实践的全面参考实现。通过研究此示例中展示的模式,开发人员可以了解如何构建他们的 Tauri 应用程序、实现 JavaScript 和 Rust 之间的有效通信、管理应用程序状态以及利用 Tauri 的功能来创建跨平台桌面应用程序。