Tauri 运行时系统提供了应用程序逻辑与底层平台特定实现之间的核心抽象层。它使 Tauri 应用程序能够以跨平台的方式与原生窗口系统交互、管理 Web 视图以及处理事件。本文档将解释运行时架构、其关键组件以及它们如何交互。
有关实际应用程序实例的信息,请参阅App 和 AppHandle。有关窗口管理详细信息,请参阅窗口管理。
Tauri 中的运行时系统充当了您平台无关的应用程序代码与底层平台特定实现之间的桥梁。它提供了定义跨不同平台窗口、Web 视图和事件处理系统能力的 trait。
来源
运行时系统围绕一组核心 trait 构建,这些 trait 定义了创建和管理窗口、Web 视图以及处理系统事件所需的能力。
Runtime trait 是运行时系统的中心组件。它定义了 Tauri 应用程序与底层窗口系统交互所需的核心功能。
来源
运行时系统由几个关键组件组成
| 组件 | 目的 | 主要功能 |
|---|---|---|
运行时 | 平台后端的核心接口 | 创建窗口和 Web 视图,运行事件循环 |
RuntimeHandle | 到运行时的线程安全句柄 | 从任何线程创建窗口/Web 视图 |
WindowDispatch | 控制窗口上的操作 | 大小、位置、焦点等。 |
WebviewDispatch | 控制 Web 视图上的操作 | 导航、脚本执行等。 |
EventLoopProxy | 将事件发送到事件循环 | 应用程序的自定义事件 |
来源
运行时事件系统是应用程序响应用户操作和系统事件的关键。事件从平台流经运行时,然后传递到应用程序代码。
RunEvent enum 代表了应用程序生命周期中可能发生的所有事件
RunEvent<T: UserEvent>
├── Exit
├── ExitRequested { code, tx }
├── WindowEvent { label, event }
├── WebviewEvent { label, event }
├── Ready
├── Resumed
├── MainEventsCleared
├── UserEvent(T)
来源
进程间通信 (IPC) 系统使得 Web 视图中的 JavaScript 代码与应用程序后端中的 Rust 代码能够进行通信。
IPC 系统使用几种关键机制
来源
Tauri 提供了两种主要的运行时实现
主要的运行时实现基于 Wry 库,该库提供了跨平台的 Web 视图和窗口功能。此实现连接到平台特定的后端
| 平台 | 窗口后端 | Web 视图实现 |
|---|---|---|
| Windows | WinRT/Win32 | WebView2 |
| macOS | AppKit | WKWebView |
| Linux | GTK | WebKitGTK |
| iOS | UIKit | WKWebView |
| Android | Android View System | WebView |
来源
模拟运行时实现用于在不需要真实窗口系统的情况下测试 Tauri 应用程序。它模拟真实运行时的行为。
来源
应用程序通过 Tauri API 与运行时进行交互,该 API 提供了对运行时功能的更高层接口。
来源
JavaScript API 提供了从 Web 上下文访问运行时功能。核心 API 函数被注入到全局的 window.__TAURI__ 对象中。
JavaScript API 通过几种机制与 Rust 后端通信
来源
运行时系统与 Tauri 的权限系统集成,以控制对功能的访问
运行时的命令和事件受到权限系统的保护,该系统在应用程序的 capability 文件中定义。
来源
Tauri Runtime System 是一个关键组件,它为窗口管理、Webview 控制和事件处理提供了一个跨平台抽象。通过其基于 Trait 的设计,Tauri 应用程序可以在不同平台上一致运行,同时利用特定平台的实现来获得最佳性能和原生集成。
运行时系统通过 Runtime、WindowDispatch 和 WebviewDispatch 等 Trait 实现关注点分离,从而实现了一个清晰的架构,该架构支持测试、扩展,以及除了默认的 Wry 实现之外的其他运行时实现。
刷新此 Wiki
最后索引时间2025年4月17日(85b191)