官网文档:Tauri Architecture | Tauri
github地址:Tauri · GitHub
Tauri介绍
Tauri是一个多语言通用工具包,非常易于组合,允许工程师制作各种各样的应用程序。它用于使用Rust工具和在Webview中呈现的HTML的组合为台式计算机构建应用程序。使用Tauri构建的应用程序可以附带任意数量的可选JS API和Rust API,这样网络视图就可以通过消息传递控制系统。开发人员可以使用自己的功能扩展默认的API,并轻松桥接Webview和基于Rust的后端。
Tauri应用程序可以有托盘式界面。它们可以按照预期由用户的操作系统进行更新和管理。它们非常小,因为它们使用操作系统的webview。它们不提供运行时,因为最终的二进制文件是从Rust编译的。这使得Tauri应用程序的逆向工程不是一项简单的任务。
Tauri 不是什么
Tauri 不是一个轻量级的内核封装器。相反,它直接使用 WRY(WRY是Rust中的一个跨平台WebView渲染库) 和 TAO 来完成繁重的系统调用工作,与操作系统进行交互。
Tauri 不是一个虚拟机或虚拟化环境。相反,它是一个应用程序工具包,允许开发 Webview OS 应用程序。
核心生态系统
Tauri架构的简化表示。
Tauri
这是主要的库,它将所有内容整合在一起。它将运行时、宏、实用工具和API集成到一个最终产品中。它在编译时读取tauri.conf.json文件,以引入功能并实际配置应用程序(甚至包括项目文件夹中的Cargo.toml文件)。它在运行时处理脚本注入(用于polyfills/原型修订),托管系统交互的API,甚至管理更新过程。
tauri运行时
Tauri本身和低级webview库之间的粘合层。
tauri宏
通过利用tauri codegen crate为上下文、处理程序和命令创建宏。
tauri-tuils
这是在许多地方重复使用的通用代码,提供了有用的工具,如解析配置文件、检测平台三元组、注入CSP(内容安全策略)以及管理资产。
tauri-build
在构建时应用宏,以配置cargo所需的一些特殊功能。
tauri-codegen
嵌入、哈希和压缩资产,包括应用程序的图标以及系统托盘图标。在编译时解析 tauri.conf.json
并生成 Config
结构体。
tauri-runtime-wry
这个库为WRY(Windows、macOS、Linux)提供了直接的系统级交互,例如打印、监控检测以及其他与窗口相关的任务。
Tauri Tooling
API (JavaScript / TypeScript)
一个TypeScript库,用于创建cjs(CommonJS)和esm(ECMAScript模块)的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 包。
Tauri模具
create-tauri-app (JavaScript)
一个工具包,将使工程团队能够使用他们选择的前端框架(只要已配置)快速搭建一个新的 tauri-apps 项目。
Upstream Crates
Tauri-Apps 组织维护了两个来自 Tauri 的“上游”crates,分别是 TAO 和 WRY。TAO 用于创建和管理应用程序窗口,而 WRY 用于与窗口内的 Webview 进行交互。
TAO
TAO 是一个跨平台的应用程序窗口创建库,支持所有主要平台,如 Windows、macOS、Linux、iOS 和 Android。它用 Rust 编写,是 winit 的一个分支,我们根据需要对其进行了扩展,比如添加了菜单栏和系统托盘功能。
WRY
WRY 是一个跨平台的 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。
插件
一般来说,插件是由第三方编写的(尽管可能存在官方支持的插件)。一个插件通常做三件事:
- 使 Rust 代码能够执行“某事”。
- 提供接口粘合剂,使其易于集成到应用程序中。
- 提供一个 JavaScript API,用于与 Rust 代码交互。
以下是一些 Tauri 插件的例子:
License
Tauri itself is licensed under MIT or Apache-2.0. If you repackage it and modify any source code, it is your responsibility to verify that you are complying with all upstream licenses. Tauri is provided AS-IS with no explicit claim for suitability for any purpose.