當我們成功建立第一個 Tauri 專案後,面對滿目的檔案和資料夾,可能會感到有些困惑。今天我們將深入解析 Tauri 專案的結構,理解每個檔案的作用和重要性,這將為後續的開發工作奠定堅實的基礎。
前端目錄 (src/
) 對前端開發者來說是最熟悉的部分,它與一般的 Vue 專案結構完全相同。這裡存放著所有的 Vue 元件、樣式檔案、JavaScript 邏輯等前端資源。
昨天自動建立的檔案並不多,只有這些:
但如果是稍微複雜一點的 Vue 專案,就可能會是這個樣子:
src/
├── components/ # Vue 元件
├── assets/ # 靜態資源(圖片、樣式等)
├── router/ # 路由設定
├── stores/ # Pinia 狀態管理
├── views/ # 頁面視圖
├── App.vue # 根元件
└── main.ts # 應用程式入口點
在這個目錄中,我們可以盡情使用 Vue 3 的所有特性,包括 Composition API、響應式資料、元件系統等。值得注意的是,雖然前端部分看起來與一般 Web 應用無異,但它實際上運行在 Tauri 提供的 Webview 環境中,具備了呼叫原生功能的能力。
後端目錄 (src-tauri/
) 是 Tauri 專案的心臟,包含了所有的 Rust 程式碼和設定檔。
src-tauri/
├── capabilities/ # 權限和安全設定
│ └── default.json
├── icons/ # 應用程式圖示
├── src/
│ ├── main.rs # 桌面端應用入口點
│ └── lib.rs # 主要應用邏輯和移動端入口點
├── build.rs # 建置腳本
├── Cargo.toml # Rust 專案設定檔
└── tauri.conf.json # Tauri 核心設定檔
build.rs
是 Tauri 的建置腳本,它在編譯過程中自動執行,負責處理圖示轉換、資源嵌入等預處理工作。一般情況下,我們不需要手動修改這個檔案。
Cargo.toml
是 Rust 生態系統的標準專案設定檔,負責管理後端的依賴套件、版本資訊和建置設定。當我們需要整合新的 Rust 函式庫或 Tauri 插件時,都需要在這裡新增相對應的依賴項目。
capabilities/
目錄是 Tauri 2.0 的重要新增功能,用於管理應用程式的權限配置。這個目錄包含了定義前端可以存取哪些原生 API 的權限檔案,取代了 Tauri 1.x 的 allowlist 機制。default.json
是預設的權限配置檔案。
src/main.rs
是桌面端應用程式的入口點,負責啟動桌面版本的 Tauri 應用程式。在 Tauri 2.0 中,建議不要直接在此檔案中撰寫業務邏輯,而是呼叫 lib.rs
中的函式:
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
tauri_app_lib::run()
}
src/lib.rs
是 Tauri 2.0 的主要應用邏輯中心,同時也是移動端的入口點。所有的 Rust 邏輯、命令註冊、以及應用程式的初始化都應該在這裡進行。這種設計讓桌面端和移動端能夠共享相同的核心邏輯:
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
tauri.conf.json
是整個 Tauri 應用程式的設定檔,包含許多重要的資訊:
identifier
:應用程式的唯一識別符,格式類似反向網域名稱(如 com.example.myapp
)。這個識別符在應用程式的整個生命週期中都不應該改變,因為它會影響應用程式的安裝、更新和數據存儲位置。app
:定義應用程式的基本資訊bundle
:控制應用程式打包相關的設定productName
:產品顯示名稱,這是使用者在系統中看到的應用程式名稱。build
:前端建置相關設定,包括:
frontendDist
:前端建置輸出目錄devUrl
:開發模式下的前端服務器位址其他更詳細的設定(如視窗配置、安全性設定、插件配置等)在之後的相關主題都會再做進一步地介紹~
Tauri 的專案結構體現了「關注點分離」的設計哲學。前端專注於使用者介面和互動邏輯,後端負責系統整合和業務邏輯,而設定檔則統一管理應用程式的行為和權限。
這種分離不僅讓熟悉 Web 開發的程式設計師能夠快速上手,也讓 Rust 開發者能夠發揮系統程式設計的優勢。同時,清晰的結構也有利於團隊協作,不同專業背景的開發者可以專注於自己擅長的領域。
今天我們探索了 Tauri 專案的完整架構:前端的 Vue 環境、後端的 Rust 核心,以及統一管控的設定檔系統。Tauri 2.0 透過「關注點分離」的設計,讓不同專業背景的開發者都能發揮所長。