Tauri 架构
简介
Tauri 是一款通用且多语言的工具包,具有很强的可组合性,可供工程师制作各种应用程序。它用于结合使用 Rust 工具和 Webview 中呈现的 HTML 来构建桌面计算机应用程序。使用 Tauri 构建的应用程序可以附带任意数量的可选 JS API 和 Rust API 片段,以便 Webview 可以通过消息传递来控制系统。开发人员可以使用自己的功能扩展默认 API,并轻松桥接 Webview 和基于 Rust 的后端。
Tauri 应用程序可以具有 自定义菜单 和 托盘式界面。它们可以 更新,并由用户的操作系统按预期进行管理。它们非常小,因为它们使用操作系统的 Webview。它们不附带运行时,因为最终的二进制文件是从 Rust 编译的。这使得 逆向 Tauri 应用程序并非易事。
Tauri 不是什么
Tauri 不是轻量级内核包装器。相反,它直接使用 WRY 和 TAO 来执行繁重的系统调用任务。
Tauri 不是 VM 或虚拟化环境。相反,它是一款应用程序工具包,可用于制作 Webview 操作系统应用程序。
核心生态系统
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 库,它为您创建 cjs
和 esm
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。
插件
一般来说,插件是由第三方编写的(即使可能有官方支持的插件)。插件通常执行 3 件事
- 使 Rust 代码能够“做某事”。
- 提供接口胶水,以便轻松集成到应用程序中。
- 提供 JavaScript API,用于与 Rust 代码进行交互。
以下是一些 Tauri 插件的示例
许可证
Tauri 本身在 MIT 或 Apache-2.0 下获得许可。如果您重新打包并修改任何源代码,您有责任验证您是否遵守所有上游许可证。Tauri 按“原样”提供,不就其是否适用于任何目的做出明确声明。
您可以在此处浏览我们的软件物料清单。