
呼……(輕輕吹了吹杯裡的熱氣,慢條斯理地品了一口剛泡好的琥珀熱茶)。
大孫女、小孫女,快過來坐下。還有各位圍在院子裡的年輕朋友們,大家都搬張藤椅,在樹蔭下找個舒服的位置坐吧。看著天邊這抹柔和溫馨的晚霞暮紫,吹著晚風,爺爺今天想用我這把老骨頭的慢步調,給你們講一個關於「重鐵車」與「輕竹籃」的故事。
你們現在年輕人啊,都喜歡在電腦上折騰些新鮮的小工具。不過,爺爺常聽大孫女抱怨,說現在的軟體做起來真是越來越「胖」了。今天,爺爺就要跟你們聊聊這個主題——「Day 19:Electron 終結者?用 Tauri v2 + Rust 打造超輕量跨平台桌面應用」。
爺爺在鄉下生活了幾十年,看過不少事情。有些人在運送幾片輕飄飄的茶葉時,竟然大費周章地造了一輛用厚重精鐵打造、重達千斤的大鐵車。大孫女,這就像是你們現在用 Electron 來寫簡單的桌面工具一樣。
你們看,僅僅是為了一個功能簡單的桌面小程式,打包出來的安裝檔隨隨便便就要 100MB 以上。更糟糕的是,一執行起來,它就像一個大胃王,在電腦裡直接吃掉幾百 MB 的記憶體。這就好比把一輛巨大的鐵車直接停在我們溫馨的小院子裡,把空間都塞得滿滿的,連小孫女想要跑來跑去、跟爺爺撒個嬌都沒地方了。
這種笨重、浪費資源的作法,就是你們年輕人常抱怨的「效能痛點」啊。難道,我們就不能像編織一個精巧、結實又輕盈的竹籃一樣,來做一個漂亮又高效的桌面程式嗎?
來,喝口茶,聽爺爺慢慢跟你們說。現在有了一種精妙的新工藝,叫做 Tauri v2 搭配高效、記憶體安全的 Rust 技術棧。
這套技術之所以能把那台「重鐵車」終結掉,靠的就是「借力打力」的聰明智慧:
前端是輕巧的紙鳶(系統原生 WebView):
Electron 為什麼那麼胖?因為它把一整顆重達上百 MB 的 Chromium 瀏覽器核心強行塞進了每一個程式包裡。而 Tauri 則非常聰明,它不自己帶瀏覽器,而是直接借用使用者電腦裡作業系統自帶的原生 WebView 渲染介面(像是 Windows 上的 WebView2、macOS 上的 WKWebView,以及 Linux 上的 WebKitGTK)。這樣一來,前端依然能用你們最喜歡的現代化 Web 技術與 Tailwind CSS 來排版,卻完全不用背負瀏覽器的重量!
後端是沉穩的藤椅(極致高效的 Rust):
負責處理檔案讀寫、系統級 API 運算等核心邏輯的後端,則由 Rust 語言來把關。這 Rust 就像是爺爺在院子裡躺了幾十年的老藤椅,穩固、沈健,給人無比安定的安全感。它沒有垃圾回收機制(Garbage Collection)的負擔,啟動與執行速度極快,而且在編譯時就用最嚴格的規矩確保了記憶體安全。
互通有無的家族對話(強大的 IPC 通訊機制):
這前端與後端,是怎麼攜手合作的呢?它們透過一套強大的 IPC(進程間通訊)機制來交換資料。前端精美的網頁負責觸發事件與畫面呈現,當需要做重度工作時,就透過一條隱形的通道,使用 invoke 去呼叫 Rust 後端標註了 #[tauri::command] 的函數來執行。這就像是大孫女在院子裡招呼一聲,爺爺就用粗重工具幫忙把柴火劈好一樣,分工明確又無比流暢。
因為這套聰明的設計,Tauri 打造出來的應用程式展現了驚人的實力:
不過啊,大孫女,這世上可沒有十全十美的事。雖然 Tauri 如此輕巧優雅,但爺爺還是得嘮叨幾句,給你們提個醒,這就是實務上的「避坑指南」:
Tauri 雖然輕,但因為它用的是使用者作業系統裡自帶的 WebView。這意味著,同一個程式,在 Windows 使用者眼裡是用 WebView2 渲染,在 Mac 使用者眼裡是用 WebKit 渲染。
因此,你們在寫網頁排版與腳本時,絕對不能像以前開發 Chrome App 那樣任性。那些在 Chrome 上看起來完美無瑕的 CSS 效果或 JS 特性,換到不同系統的 WebView 上,可能排版就歪了,甚至執行出錯。你們必須特別花心思在 CSS/JS 的跨瀏覽器相容性上,並在各平台做好端對端(E2E)測試,才不會讓精心做出來的工具在別人的電腦上鬧了笑話。
來,這杯琥珀熱茶也差不多溫了,天色漸漸暗了下來,我們小院子裡的藤椅也顯得特別安寧。寫程式、做軟體啊,就跟品茶、編織竹籃一樣,都是一門需要耐心與細心的手藝。選對了輕巧的工具,你們的軟體就能像飛燕一樣自由翱翔,又像老藤椅一樣讓人放心。