跳到主要内容

Tauri 架构

简介

Tauri 是一款多语言通用工具包,具有很强的组合性,允许工程师创建各种各样的应用程序。它用于结合 Rust 工具和在 Webview 中渲染的 HTML 来构建桌面应用程序。使用 Tauri 构建的应用程序可以包含任意数量的可选 JS API 和 Rust API 部分,以便 Webview 可以通过消息传递来控制系统。开发者可以使用自己的功能扩展默认 API,并轻松地桥接 Webview 和基于 Rust 的后端。

Tauri 应用可以拥有自定义菜单托盘式界面。它们可以更新,并按预期由用户的操作系统管理。它们非常小巧,因为它们使用了操作系统的 Webview。它们不包含运行时,因为最终二进制文件是从 Rust 编译的。这使得反向工程 Tauri 应用并非易事

Tauri 不是什么

Tauri 不是轻量级的内核包装器。相反,它直接使用WRYTAO来完成对操作系统的系统调用的繁重工作。

Tauri 不是虚拟机或虚拟化环境。相反,它是一个应用程序工具包,允许创建 Webview 操作系统应用程序。

核心生态系统

graph TB; subgraph Core direction LR subgraph tauri direction TB tauri-runtime tauri-macros tauri-utils end %% This section should be organized from top to bottom tauri-build tauri-codegen tauri-runtime-wry end tauri-runtime-wry -.-> WRY subgraph Upstream direction LR WRY TAO WRY -.-> TAO end style Core fill:#abd0f9,stroke:#1D81EE,stroke-width:4px style Upstream fill:#abd0f9,stroke:#1D81EE,stroke-width:4px style tauri fill:#fad3a9,stroke:#F28918,stroke-width:4px

tauri

这是将所有内容整合在一起的主要板条箱。它将运行时、宏、实用程序和 API 整合到一个最终产品中。它在编译时读取tauri.conf.json文件以引入功能并进行应用程序的实际配置(甚至项目文件夹中的Cargo.toml文件)。它处理运行时的脚本注入(用于 polyfill/原型修订),托管用于系统交互的 API,甚至管理更新过程。

tauri-runtime

Tauri 本身与更低级别的 webview 库之间的粘合层。

tauri-macros

通过利用tauri-codegen板条箱为上下文、处理程序和命令创建宏。

tauri-utils

在许多地方重复使用的通用代码,并提供有用的实用程序,例如解析配置文件、检测平台三元组、注入 CSP 和管理资产。

tauri-build

在构建时应用宏以调整cargo所需的一些特殊功能。

tauri-codegen

嵌入、哈希和压缩资产,包括应用程序图标以及系统托盘图标。在编译时解析tauri.conf.json并生成 Config 结构体。

tauri-runtime-wry

此板条箱专门为 WRY 开放直接的系统级交互,例如打印、监视器检测和其他与窗口相关的任务。

Tauri 工具

API (JavaScript / TypeScript)

一个 TypeScript 库,它可以创建cjsesm JavaScript 端点,您可以将其导入到您的前端框架中,以便 Webview 可以调用和监听后端活动。它也以纯 TypeScript 的形式提供,因为对于某些框架来说,这是更优的方案。它使用 Webview 到其主机的消息传递。

Bundler (Rust / Shell)

一个库,用于为它检测到的或被告知的平台构建 Tauri 应用程序。目前支持 macOS、Windows 和 Linux,但在不久的将来也将支持移动平台。可以用于 Tauri 项目之外。

cli.rs (Rust)

这个 Rust 可执行文件提供了 CLI 所需的所有必需活动的完整接口。它在 macOS、Windows 和 Linux 上运行。

cli.js (JavaScript)

使用napi-rs围绕cli.rs的包装器,用于为每个平台生成 npm 包。

create-tauri-app (JavaScript)

一个工具包,它将使工程团队能够使用他们选择的(只要它已被配置)前端框架快速搭建一个新的tauri-apps项目。

上游板条箱

Tauri-Apps 组织维护着来自 Tauri 的两个“上游”板条箱,即用于创建和管理应用程序窗口的 TAO,以及用于与窗口内 Webview 交互的 WRY。

TAO

一个用 Rust 编写的跨平台应用程序窗口创建库,支持所有主要的平台,如 Windows、macOS、Linux、iOS 和 Android。它是用 Rust 编写的,是我们为满足自身需求(如菜单栏和系统托盘)而扩展的winit的一个分支。

WRY

WRY 是一个用 Rust 编写的跨平台 WebView 渲染库,支持所有主要的桌面平台,如 Windows、macOS 和 Linux。Tauri 使用 WRY 作为抽象层,负责确定使用哪个 webview(以及如何进行交互)。

附加工具

tauri-action

GitHub 工作流程,用于为所有平台构建 Tauri 二进制文件。即使没有设置 Tauri,也可以创建(非常基本的)Tauri 应用程序。

tauri-vscode

此项目增强了 Visual Studio Code 界面,并添加了一些实用功能。

vue-cli-plugin-tauri

允许您快速地在 vue-cli 项目中安装 Tauri。

插件

Tauri 插件指南

一般来说,插件由第三方开发(尽管也可能存在官方支持的插件)。一个插件通常执行三件事:

  1. 允许 Rust 代码执行“某些操作”。
  2. 提供接口粘合剂,以便于集成到应用程序中。
  3. 提供 JavaScript API 用于与 Rust 代码交互。

以下是一些 Tauri 插件示例:

许可证

Tauri 本身采用 MIT 或 Apache-2.0 许可证。如果您重新打包并修改任何源代码,则有责任验证您是否遵守所有上游许可证。Tauri 按“现状”提供,不对任何用途的适用性作任何明确声明。

您可以在此处查看我们的 软件物料清单 (SBOM)

后续步骤

您的第一个 Tauri 应用

开发周期

发布

更新