之前有過關注的小夥伴 ,一定知道我之前主要的桌面端是 : PyQT + Python 的組合。 這個組合整體來說很成熟也很強大。
基於腳手架 ❗❗❗ ,簡單的小工具能輕鬆解決,複雜的也能做一個十幾個頁面,近10萬行的複雜項目, 整體還能保證一定的流暢性。
但是 ,隨著對精細功能的逐步提高 ,以及更多多樣化的定制需求,代碼量的增加 ,這一套有點吃力了。並且AI在其中的作用越來越低。
代碼邏輯越簡單 ,流程越精簡,AI是越擅長的。
直到我無意中了解到 Go 也有自己的桌面端方案 ,並且社區活躍度還相當不錯 :
@ github.com/wailsapp/wails

於是我週末花了大概小半天時間讓AI寫了個小應用 ,期間我還開了兩把遊戲 ,哇 ,這效果真的不錯。
然後我就很簡單的得到了這樣一個應用 :



但是這裡可能會讓很多小夥伴想到這樣一個架構 : Node.js + Electron. 這也是一個很多人都知道的熱門組合,我之前也多次使用過他開發小工具 ,效果也不錯。
但是我覺得 GO-Wails 比他更適合AI時代 : 這裡讓AI做了一個很清晰的總結 ,關於 GO 和 Electron 的選擇 :
| 維度 | Go+Wails | Electron |
|---|---|---|
| 性能 | ⭐⭐⭐⭐⭐ 飛快 | ⭐⭐ 慢 |
| 體積 | ⭐⭐⭐⭐⭐ 苗條 | ⭐⭐ 臃腫 |
| 開發效率 | ⭐⭐⭐ 需學Go | ⭐⭐⭐⭐⭐ 前端直接上手 |
| 生態/插件 | ⭐⭐⭐ 發展中 | ⭐⭐⭐⭐⭐ npm應有盡有 |
| 調試體驗 | ⭐⭐⭐ 夠用 | ⭐⭐⭐⭐⭐ DevTools真香 |
| 系統整合 | ⭐⭐⭐⭐⭐ 直接調C/系統API | ⭐⭐⭐ 需要繞路 |
| 跨平台一致性 | ⭐⭐⭐ WebView有差異 | ⭐⭐⭐⭐⭐ 自帶瀏覽器,表現統一 |
| 安全性 | ⭐⭐⭐⭐ 攻擊面小 | ⭐⭐⭐ Node+前端=風險大 |
針對我來說 ,我主要有兩個目的 :
結合這些 ,Go + Wails 真的是一個完美的選擇。
Wails = Go後端 + Web前端 + 系統WebView,打包成一個輕量原生桌面應用.
Wails 具體幹了三件事
第一件:嵌入一個瀏覽器窗口
Wails 不會自帶瀏覽器內核,而是借用操作系統已有的。Windows 上用 WebView2(就是 Edge 的內核),macOS 上用 WebKit(Safari 的內核),Linux 上用 WebKitGTK。你的前端代碼(HTML、CSS、JS)就在這個窗口裡渲染,和在瀏覽器裡打開網頁沒什麼區別。
第二件:搭一座橋讓 JS 和 Go 互相調用
這是 Wails 最核心的能力。正常情況下,前端想調用後端需要發 HTTP 請求。但 Wails 生成了一層綁定代碼,讓你在 JS 裡可以直接調用 Go 函數,就像調用本地函數一樣,不需要自己寫介面、處理請求響應。Go 函數的返回值會直接傳回給 JS。反過來,Go 也可以向前端發送事件,前端監聽就行。
第三件:把所有東西打包成一個文件
打包時,Wails 會把前端的 HTML、CSS、JS 全部嵌入到 Go 的二進制文件裡。最終產物就是一個可執行文件,用戶雙擊就能運行,不需要額外安裝任何東西。
這一篇不是教程文檔 ,這東西 AI 一查一大把 ,這裡就不細說了。
@ gitee.com/antblack/ant_go_wails_scaffold

打包後的大小(PS :這裡我沒有試過分發後能不能開箱就用,哈哈哈)

能在這麼短的時間構建出這麼好的一个項目 ,並且打包只需要小小的15M . 啟動還是秒開,我覺得未來我的大部分項目應該都會基於這個項目實現。
如果你現在想找到一個好用的桌面端框架體系 ,可以考慮這個。
0基礎 + AI 就可以輕鬆的實現複雜的功能 ,真的太適合AI了。