雖然昨天有簡單提了一下,但今天就來正式認識一下 Tauri 吧!
Tauri 是一個開源框架,讓開發者可以使用 HTML、CSS 和 JavaScript 等網頁前端技術來建立跨平台的桌面與手機 App。它的核心理念就是要提供一個更輕量、更快速、更安全的解決方案。
以前想要用網頁技術來開發桌面應用的話,Electron.js 幾乎是唯一的選擇。不過 Electron.js 一直有個讓人頭痛的問題 — 打包出來的檔案超級大,而且記憶體消耗也很兇。為了解決這些痛點,Tauri 就這樣誕生了,並在 2022 年 6 月時正式發布 1.0.0 版。
接著過了兩年,在 2024 年 10 月時,Tauri 又推出了 2.0 版。這個版本最令人興奮的地方就是正式支援 iOS 和 Android,這意味著開發者現在可以用同一套程式碼,真正地涵蓋所有主流的桌面和手機平台。除此之外,2.0 版本還帶來了更強大的外掛系統,讓你可以用 Swift (iOS) 和 Kotlin (Android) 來寫原生功能,同時底層的 IPC (跨程序通訊) 也重新打造,效能大幅提升。
昨天的文章中有提到,除了 Tauri 之外,其實還有不少框架也在想辦法解決跨平台開發的需求。之前看到的這個比較表整理了「能將 Web App 轉換成桌面 App」的各種框架,在這些框架中,除了 Tauri 之外,只有 Flutter 跟 .NET MAUI 可以同時開發手機 APP,不過它們的前端都不是用 HTML、CSS、JS 這套技術。
(也正因為這樣,我們這次的公司專案才會選擇 Tauri)
Flutter
雖然上面說 Flutter 可以開發 Web App,但其實它的運作方式有點特別...
Flutter 不像一般網頁那樣使用 HTML/CSS 來渲染,也不像 React Native 那樣依賴作業系統的原生 UI 元件。相反地,Flutter 自帶了一個渲染引擎(叫做 Skia),會直接在畫布(Canvas)上一個像素一個像素地繪製。不管你的 App 是跑在手機、桌面還是網頁上,對 Flutter 來說都只是一塊空白的畫布,然後它會自己把按鈕、文字、動畫等各種介面元素通通畫上去。
至於 React Native 嘛,它其實不是把網頁包起來(所以才沒被放進比較表裡)。它的做法是把 JavaScript 程式碼轉換成各平台真正的原生 UI 元件。例如:在手機上,一個 <View>
元件會變成 Android 的原生 View 或 iOS 的原生 UIView。
Tauri 2.0 為跨平台 App 開發帶來了一個很讓人期待的新選擇。它並不是要完全取代 Electron,而是在輕量、效能跟安全性這些方面提供更好的解決方案。如果你的專案很在意資源消耗,或者你想用一套程式碼同時搞定桌面跟手機 App,那 Tauri 2.0 就會是一個值得考慮的選擇。