<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Desktop on omegaatt</title>
    <link>https://www.omegaatt.com/tags/desktop/</link>
    <description>Recent content in Desktop on omegaatt</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>zh-TW</language>
    <managingEditor>raiven.kao@gmail.com (Raiven Kao)</managingEditor>
    <webMaster>raiven.kao@gmail.com (Raiven Kao)</webMaster>
    <copyright>Raiven Kao 2020 - 2026</copyright>
    <lastBuildDate>Mon, 09 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.omegaatt.com/tags/desktop/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>放棄 Electron 與 Tauri? 我用 Wails &#43; HTMX 打造 3MB 的跨平台桌面應用</title>
      <link>https://www.omegaatt.com/blogs/develop/2026/golang_desktop_application_with_wails_and_htmx/</link>
      <pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><author>raiven.kao@gmail.com (Raiven Kao)</author>
      <guid>https://www.omegaatt.com/blogs/develop/2026/golang_desktop_application_with_wails_and_htmx/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Web 仔要有 Web 仔的自覺&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;前陣子收到了 Murphy 的需求，嘗試使用 &lt;a href=&#34;https://www.omegaatt.com/blogs/develop/2025/tauri_first_look&#34;&gt;Tauri 寫了一個桌面 App&lt;/a&gt;。Tauri 結合 Rust 與 React 的體驗相當不錯，打包出來的體積也十分理想。&lt;/p&gt;
&lt;p&gt;但身為一個主要撰寫 Golang 的後端工程師，內心總有一個聲音：「如果能用 Go 來寫桌面應用，那該有多好？」&lt;/p&gt;
&lt;p&gt;眾所周知，Golang 在原生的 Desktop GUI 框架上一直沒有特別強勢的殺手級專案（過去使用 Fyne 的經驗不算太好）。在環顧了一眾基於 Chromium 的 Electron 或是基於系統 WebView 的 Tauri 後，決定走一條稍微不一樣的「老路」：使用 &lt;a href=&#34;https://wails.io/&#34;&gt;Wails&lt;/a&gt; 搭配 &lt;a href=&#34;https://htmx.org/&#34;&gt;HTMX&lt;/a&gt; 與 &lt;a href=&#34;https://templ.guide/&#34;&gt;Templ&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;最終的產物就是 &lt;a href=&#34;https://github.com/omegaatt36/dub&#34;&gt;Dub&lt;/a&gt; 一個跨平台的批次檔案重新命名工具。更甚，在 Linux 上打包出來的可執行檔只有約 3MB，並且完美支援 macOS 與 Linux，且幾乎沒有複雜的前端狀態管理負擔。&lt;/p&gt;
&lt;h2 id=&#34;為什麼是-wails--htmx&#34;&gt;為什麼是 Wails + HTMX？&lt;/h2&gt;
&lt;p&gt;在選擇桌面應用程式的技術方案時，我們通常有幾個考量&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Electron: 開發體驗極佳，生態系最豐富，但代價是動輒上百 MB 的體積與高昂的記憶體佔用。對於一個小工具來說，太過沉重。（這也是我優先選擇 Zed.dev 作為主要編輯器的原因）&lt;/li&gt;
&lt;li&gt;Tauri: 效能極佳，體積小，但後端需要寫 Rust。雖然 Rust 很香，但有時候只想用最熟悉的 Go 快速把邏輯刻出來。&lt;/li&gt;
&lt;li&gt;Wails: 與 Tauri 類似，採用前端網頁技術結合系統原生 WebView，但後端語言是 Golang。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;既然選了 Wails，前端該用什麼？
現代前端框架（React, Vue, Svelte）通常需要建置複雜的 SPA（Single Page Application），並透過 JSON API 與後端溝通。但對於一個狀態並不複雜的工具軟體，不想在前端再維護一份狀態。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
