跳至主要内容

Tauri 架构

简介

Tauri 是一款通用且多语言的工具包,具有很强的可组合性,可供工程师制作各种应用程序。它用于结合使用 Rust 工具和 Webview 中呈现的 HTML 来构建桌面计算机应用程序。使用 Tauri 构建的应用程序可以附带任意数量的可选 JS API 和 Rust API 片段,以便 Webview 可以通过消息传递来控制系统。开发人员可以使用自己的功能扩展默认 API,并轻松桥接 Webview 和基于 Rust 的后端。

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

Tauri 不是什么

Tauri 不是轻量级内核包装器。相反,它直接使用 WRYTAO 来执行繁重的系统调用任务。

Tauri 不是 VM 或虚拟化环境。相反,它是一款应用程序工具包,可用于制作 Webview 操作系统应用程序。

核心生态系统

graph TB; subgraph Core direction LR subgraph tauri direction TB tauri-runtime tauri-macros tauri-utils end %% 此部分应从上到下组织 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 文件)。它在运行时处理脚本注入(用于填充/原型修订),承载用于系统交互的 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 插件指南

一般来说,插件是由第三方编写的(即使可能有官方支持的插件)。插件通常执行 3 件事

  1. 使 Rust 代码能够“做某事”。
  2. 提供接口胶水,以便轻松集成到应用程序中。
  3. 提供 JavaScript API,用于与 Rust 代码进行交互。

以下是一些 Tauri 插件的示例

许可证

Tauri 本身在 MIT 或 Apache-2.0 下获得许可。如果您重新打包并修改任何源代码,您有责任验证您是否遵守所有上游许可证。Tauri 按“原样”提供,不就其是否适用于任何目的做出明确声明。

您可以在此处浏览我们的软件物料清单

后续步骤

你的第一个 Tauri 应用

开发周期

发布

更新