第一次聽到 Tauri 這個詞,去學習一下

本文首發於公眾號「Android技術圈」,未經授權嚴禁轉載

前幾天聊 Android 桌面端的時候,留言區有小夥伴說:「現在用 Tauri 做桌面端很爽。」

然後好幾個人跟著回覆:「第一次聽到 Tauri 這個詞,去學習一下。」

Image

既然大家都好奇,那我就先替你們踩踩路。花了點時間把 Tauri 官方文件翻了一遍,整理成這篇入門指南。

Tauri 到底是什麼

一句話:Tauri 是一個用 Rust 建構跨平台應用程式的框架。

你用熟悉的前端技術(React、Vue、Svelte 隨便選)寫介面,用 Rust 寫後端邏輯,打包出來的應用程式可以跑在 Windows、macOS、Linux,甚至 Android 和 iOS 上。

聽起來像 Electron?確實,它們解決的是同一個問題。但 Tauri 的思路完全不同。

Image

Electron 的做法是把整個 Chromium 瀏覽器打包進你的應用程式。所以一個簡單的 Hello World 應用程式,Electron 打包出來至少 100MB 起跳。

Tauri 不打包瀏覽器。它直接呼叫作業系統自帶的 WebView(macOS 用 WebKit,Windows 用 WebView2,Linux 用 WebKitGTK)。結果就是:

一個最小的 Tauri 應用程式,打包後只有 600KB。

你沒看錯,600KB。不是 600MB。

和 Electron 比,到底強在哪

既然都是做桌面端,那就直接比較。

Image

體積:Tauri 應用程式 600KB 起步,Electron 應用程式 100MB 起步。差了 100 多倍。

記憶體佔用:Tauri 用系統原生 WebView,不需要額外的瀏覽器程序。記憶體佔用通常只有 Electron 的一半甚至更少。

安全性:Tauri 基於 Rust,天生記憶體安全。還內建了權限系統,你的前端程式碼不能隨便存取檔案系統或網路,必須在設定裡明確宣告權限。

前端自由度:兩者都支援任意前端框架。這一點打平。

後端語言:Electron 用 Node.js,Tauri 用 Rust。Rust 效能更強,但學習曲線也更陡。

平台支援:Electron 支援 Windows、macOS、Linux。Tauri 2.0 在此基礎上還加了 Android 和 iOS。

說實話,Tauri 在大部分維度上都贏了。唯一的「缺點」是需要學 Rust。但後面我會告訴你,其實入門沒那麼難。

它能做什麼

Tauri 不只是個「殼」。它提供了 30+ 官方外掛,涵蓋了桌面應用程式開發的幾乎所有常見需求:

系統整合類

  • • 系統匣(System Tray)
  • • 全域快捷鍵
  • • 原生通知
  • • 深層連結(Deep Linking)
  • • 自動啟動

資料儲存類

  • • 檔案系統存取
  • • SQL 資料庫
  • • 鍵值儲存(Store)
  • • 加密資料庫(Stronghold)

網路通訊類

  • • HTTP 用戶端
  • • WebSocket
  • • 檔案上傳

應用程式管理類

  • • 自動更新(Auto Updater)
  • • 單一實例控制
  • • 視窗狀態管理
  • • CLI 命令列支援

Image

除了官方外掛,社群還貢獻了 70+ 第三方外掛。基本上你能想到的桌面端功能,都有現成的方案。

舉幾個用 Tauri 建構的知名應用程式:

  • Cody(Sourcegraph 的 AI 程式設計助理)
  • Crabnebula(應用程式發佈平台)
  • • 還有不少獨立開發者用它做工具類應用程式

前端開發者的最大疑問:一定要學 Rust 嗎

這可能是大部分前端同學最關心的問題。

答案是:看你要做什麼。

如果你只是做一個簡單的桌面應用程式——把網頁包成桌面端,加個系統匣,加個本機儲存——那你幾乎不需要寫 Rust。Tauri 的官方外掛已經幫你封裝好了,前端直接呼叫 JavaScript API 就行。

<div><div><div></div><span>bash</span></div><div><div> <span>體驗 AI 程式碼助理</span></div><div> <span>程式碼解讀</span></div><div>複製程式碼</div></div></div>```
<span>// 前端直接呼叫 Tauri 的檔案系統外掛</span>
<span>import { readTextFile } from <span>'@tauri-apps/plugin-fs'</span>;</span>
<span></span>
<span>const content = await readTextFile(<span>'config.json'</span>);</span>

但如果你需要做一些重度後端邏輯——比如影像處理、大檔案操作、複雜的系統呼叫——那你需要用 Rust 寫 Command,透過 Tauri 的 IPC 機制讓前端呼叫:

<div><div><div></div><span>bash</span></div><div><div> <span>體驗 AI 程式碼助理</span></div><div> <span>程式碼解讀</span></div><div>複製程式碼</div></div></div>```
<span>// Rust 端定義 Command</span>
<span><span>#[tauri::command]</span></span>
<span>fn greet(name: &str) -> String {</span>
<span>    format!(<span>"Hello, {}!"</span>, name)</span>
<span>}</span>

<div><div><div></div><span>bash</span></div><div><div> <span>體驗 AI 程式碼助理</span></div><div> <span>程式碼解讀</span></div><div>複製程式碼</div></div></div>```
<span>// 前端呼叫</span>
<span>import { invoke } from <span>'@tauri-apps/api/core'</span>;</span>
<span></span>
<span>const result = await invoke(<span>'greet'</span>, { name: <span>'Tauri'</span> });</span>

所以 Rust 不是門檻,而是天花板。你可以從零 Rust 開始用 Tauri,等需要的時候再學。

學習路線:怎麼開始
---------

很多人聽到 Tauri 的第一反應是「好是好,但學起來難吧?」

其實還好。我整理了一條從零開始的學習路線:

![Image](https://i.imgur.com/SDncggG.jpeg)

**第一步:環境準備**

不管你用什麼系統,都需要安裝 Rust。macOS 還需要 Xcode,Windows 需要 Visual Studio Build Tools,Linux 需要一些系統相依套件。

具體步驟官方文件寫得很清楚,跟著走就行:v2.tauri.app/start/prerequisites

**第二步:建立第一個專案**

一行命令搞定:

<div><div><div></div><span>bash</span></div><div><div> <span>體驗 AI 程式碼助理</span></div><div> <span>程式碼解讀</span></div><div>複製程式碼</div></div></div>```
<span>npm create tauri-app@latest</span>

它會讓你選前端框架(React / Vue / Svelte / Vanilla 等),然後自動生成專案範本。

第三步:理解專案結構

Tauri 專案分兩部分:

  • src/ —— 你的前端程式碼,和一般 Web 專案一樣
  • src-tauri/ —— Rust 後端程式碼和 Tauri 設定

先把前端跑起來,確認介面 OK,再去看 Rust 那邊。

第四步:學會用外掛

不要從零寫 Rust。先用官方外掛解決問題。檔案讀寫、HTTP 請求、本機儲存、系統通知……這些都有現成的外掛,npm install 一下就能用。

第五步:按需學 Rust

等你發現外掛滿足不了需求的時候,再去學 Rust 基礎。重點學所有權(Ownership)、生命週期(Lifetime)、錯誤處理(Result/Option)這幾個核心概念就夠起步了。

推薦資源:

  • • Rust 官方教程 The Rust Programming Language(免費線上)
  • • Tauri 官方文件 v2.tauri.app(寫得非常好)
  • • Tauri GitHub 倉庫的 examples 目錄(實戰參考)

適合誰用

說了這麼多,Tauri 適合什麼人?

前端開發者想做桌面端:這是 Tauri 最核心的目標使用者。你不需要學新的 UI 框架,用現有的前端技術棧就能做出專業的桌面應用程式。

獨立開發者做工具類產品:體積小、效能好、跨平台,非常適合做效率工具、編輯器、管理面板這類應用程式。

企業內部工具:比 Electron 省資源,安全性更好,適合做需要長期執行的內部工具。

想學 Rust 的同學:Tauri 是一個很好的 Rust 實戰入口。你可以從前端入手,逐步深入 Rust,比直接啃 Rust 教程有趣得多。

寫在最後

Tauri 不是什麼新概念了,1.0 在 2022 年就發布了。但 2.0 加入行動端支援之後,它的想像空間一下子大了很多。

一個框架,一套程式碼,Desktop + Mobile 全覆蓋。再加上 Rust 的效能和安全性加持,說它是 Electron 最強替代並不誇張。

當然,它也不是完美的。Rust 的學習曲線、WebView 的相容性差異、生態規模和 Electron 相比還有差距——這些都是需要考慮的。

但至少,它給了我們一個新的選擇。

你用過 Tauri 嗎?或者你在用什麼做桌面端開發?歡迎留言區聊聊!

#跨平台開發 #Tauri #Rust #前端開發 #桌面端開發


原文出處:https://juejin.cn/post/7629549824971915270


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝3   💬3   ❤️1
198
🥈
我愛JS
💬2  
7
🥉
Gigi
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登