跳至主要內容

Tauri 架構

簡介

Tauri 是一個多語言且通用的工具包,具有高度的組合性,讓工程師能夠製作各種應用程式。它用於結合 Rust 工具和在 Webview 中呈現的 HTML 來建置桌面電腦應用程式。使用 Tauri 建置的應用程式可以搭配任意數量的選用 JS API 和 Rust API,以便 Webview 能夠透過訊息傳遞來控制系統。開發人員可以輕鬆地使用自己的功能來擴充預設 API,並橋接 Webview 和基於 Rust 的後端。

Tauri 應用程式可以有 自訂選單系統匣介面。它們可以 更新,並由使用者的作業系統按預期管理。它們非常小,因為它們使用作業系統的網路檢視。它們不會運送執行時期,因為最終的二進位檔是由 Rust 編譯的。這使得 還原 Tauri 應用程式並非易事

Tauri 不是什麼

Tauri 不是輕量級的內核包裝器。相反地,它直接使用 WRYTAO 來執行對作業系統進行系統呼叫的繁重工作。

Tauri 不是 VM 或虛擬化環境。相反地,它是一個應用程式工具包,允許製作網路檢視作業系統應用程式。

核心生態系統

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 本身與低層級網頁檢視程式庫之間的黏合層。

tauri-macros

透過利用 tauri-codegen crate,為 context、handler 和指令建立巨集。

tauri-utils

在許多地方重複使用的共用程式碼,並提供有用的公用程式,例如剖析組態檔、偵測平台三重組、注入 CSP 和管理資源。

tauri-build

在建置時套用巨集,以裝配 cargo 所需的一些特殊功能。

tauri-codegen

嵌入、雜湊和壓縮資源,包括應用程式和系統匣的圖示。在編譯時剖析 tauri.conf.json 並產生 Config 結構。

tauri-runtime-wry

這個板條箱開放了專門針對 WRY 的直接系統層級互動,例如列印、監視器偵測和其他與視窗相關的任務。

Tauri Tooling

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 專案,並使用他們選擇的前端框架(只要已設定好)。

上游 Crate

Tauri-Apps 組織維護兩個 Tauri 的「上游」Crate,分別是 TAO,用於建立和管理應用程式視窗,以及 WRY,用於與視窗內的 Webview 介接。

TAO

跨平台應用程式視窗建立函式庫,使用 Rust 編寫,支援所有主要平台,如 Windows、macOS、Linux、iOS 和 Android。使用 Rust 編寫,是 winit 的分支,我們已針對自己的需求進行擴充,例如選單列和系統匣。

WRY

WRY 是跨平台 WebView 渲染函式庫,使用 Rust 編寫,支援所有主要桌面平台,如 Windows、macOS 和 Linux。Tauri 使用 WRY 作為抽象層,負責決定使用哪個 webview(以及如何進行互動)。

其他工具

tauri-action

建立所有平台的 Tauri 二進位檔的 GitHub 工作流程。即使未設定 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 應用程式

開發週期

發布

更新