Tauri 架构
简介
Tauri 是一款组合性强的多语言通用工具包,可用于制作各种桌面应用程序。 其基于一系列 Rust 工具及 WebView 内渲染的 HTML 构成。 使用 Tauri 构建的应用可使用任意 JS 和 Rust API,通过消息传递让 WebView 得以控制系统。 开发人员可以用自己的功能扩展默认的应用程序接口,并在 Webview 和基于 Rust 的后台之间轻松搭建桥梁。
Tauri 应用程序可以拥有自定义菜单和托盘接口。它们可以更新,并由用户的操作系统进行管理。由于使用的是操作系统的网络视图,它们的体积非常小。由于最终二进制文件是由 Rust 编译而成,因此不需要运行时。因此,反转 Tauri 应用程序并非易事。
Tauri 不是什么?
Tauri 不是一个轻量级的内核封装器。相反,它直接使用 WRY 和 TAO 来完成系统调用操作系统的重任。
Tauri 不是虚拟机或虚拟化环境。相反,它是一个应用程序工具包,可用于制作 Webview OS 应用程序。
核心生态系统
tauri
这是将一切整合在一起的主要板条箱。它将运行时、宏、实用程序和应用程序接口整合到最终产品中。它在编译时读取 tauri.conf.json
文件以引入功能,并负责应用程序的实际配置(甚至包括项目文件夹中的 Cargo.toml
文件)。它在运行时处理脚本注入(用于多填充/原型修订),托管用于系统交互的 API,甚至管理更新过程。
tauri-runtime
Tauri 本身与底层webview库之间的粘合层。
tauri-macros
利用 tauri-codegen
crate 为上下文、处理程序和命令创建宏。
tauri-utils
通用代码可在许多地方重复使用,并提供有用的实用工具,如解析配置文件、检测平台三元组、注入 CSP 和管理资产。
tauri-build
在构建时应用宏,为 cargo
提供所需的一些特殊功能
tauri-codegen
嵌入、散列和压缩资源,包括应用程序和系统托盘的图标。在编译时解析 tauri.conf.json
,并生成配置结构。
tauri-runtime-wry
该 crate 为 WRY 提供了直接的系统级交互,例如打印、监视器检测以及其他与窗口相关的任务。
Tauri 工具
API (JavaScript / TypeScript)
一个 typescript 库,它创建 cjs
和 esm
JavaScript 端点,供您导入前端框架,以便 Webview 可以调用和监听后端活动。 还以纯打字稿形式发布,因为对于某些框架来说这是更优化的。 它使用 webviews 到其主机的消息传递。
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 用于创建和管理应用程序窗口, 和WRY 以在窗口内生存的网页视图接口。
TAO
Rust 中的跨平台应用程序窗口创建库,支持 Windows、macOS、Linux、iOS 和 Android 等所有主流平台。该库使用 Rust 编写,是 winit 的一个分叉,我们根据自己的需要对其进行了扩展,如菜单栏和系统托盘。
WRY
WRY 是 Rust 中的跨平台 WebView 渲染库,支持 Windows、macOS 和 Linux 等所有主要桌面平台。 Tauri 使用 WRY 作为抽象层,负责确定使用哪个 webview(以及如何进行交互)。
附加工具
tauri-action
为所有平台构建 Tauri 二进制文件的 GitHub 工作流程。 即使没有设置 Tauri,甚至允许创建(非常基本的) Tauri 应用程序。
tauri-vscode
该项目通过几个不错的功能增强了 Visual Studio Code 界面。
vue-cli-plugin-tauri
允许您在 vue-cli 项目中非常快速地安装 Tauri。
插件
一般来说,插件是由第三方创作的 (即使可能有官方支持的插件)。 一款插件通常会做三件事:
- 使 Rust 代码能够做“某事”。
- 提供界面胶水以便于整合到应用中。
- 提供用于与 Rust 代码交互的 JavaScript API。
以下是 Tauri 插件的一些示例:
许可协议
Tauri 以 MIT 或 Apache 2.0 许可。 如果您重新打包并修改任何源代码,则您有责任验证您是否遵守所有上游许可证。 Tauri 按原样提供,没有明确声明适用于任何目的。
您可以在这里阅读我们的软件材料清单。