Stories

Detail Return Return

作為 PHP 開發者,我第一次用 Go 寫了個桌面應用 - Stories Detail

我平時是做 PHP 的,工作裏基本上都是在寫 Web 應用。説實話,寫久了難免有點慣性思維:服務器、框架、數據庫、API、瀏覽器。
而這次,我做了點不一樣的東西 —— 一個用 Go 寫的財務管理桌面應用

很多人可能會覺得奇怪:財務管理、記賬軟件,這不已經爛大街了嗎?隨便一搜一大堆,為什麼還要自己做一個?

我其實一開始也沒打算做什麼大而全的產品,而是因為一個很小的念頭:我想試試 Go 寫應用,並打包成 Windows 或 Mac 上能跑的桌面軟件


為什麼會有這個念頭

PHP 的世界裏,幾乎繞不開服務器。寫一個應用,哪怕功能再小,也得起一個 Web 服務,訪問地址可能是 http://localhost:8080,然後瀏覽器打開用。
這沒什麼不好,但問題是:

  • 它總歸還是個 Web 應用,本地其實只是跑個“假服務器”;
  • 想給別人用,要麼部署服務器,要麼教別人配環境,挺麻煩;
  • 沒法一鍵生成一個“能直接安裝”的應用。

而 Go 給了我一種完全不同的體驗:隨手 go build,就能編譯出一個二進制文件,甚至還能輕鬆跨平台打包。
這讓我很感興趣,於是就有了這個想法:不如用 Go 寫個小工具,然後打包成桌面應用跑跑看。


為什麼是財務管理?

那為什麼選財務管理呢?因為這個需求對我來説剛好存在

我平時的開銷基本都在支付寶和微信裏,雖然它們各自有統計,但沒法合併在一起。
我更希望把兩個平台的賬單統一起來,還能對消費分類做個合併統計,好讓我清楚錢都花到哪裏去了。

而財務管理這個主題也很適合練手:

  • 前端:做一個管理後台頁面,用來錄入、展示、統計;
  • 後端:提供賬單存儲和查詢的 API;
  • 再加上:嘗試把它打包成桌面應用

於是我就開工了。


開發過程中的一些體會

做到現在,項目已經算是一個最基礎可用的版本了。雖然功能不復雜,但過程裏的體會挺有意思。

1. Go 確實很“輕”

寫 PHP 的時候,要部署、要跑服務,框架本身也會預先定義很多結構。
而 Go 就很樸素:從監聽端口開始,一切都要自己實現。聽起來像是會很麻煩,但實際體驗完全不是這樣。

端口監聽、配置文件、路由、中間件……幾行代碼就能完成。
不僅沒有在基建上“浪費時間”的感覺,反而有一種更自由的掌控感。這對我來説很新鮮。

2. 桌面應用和 Web 應用的邊界感

雖然這是“桌面應用”,但本質上我還是走前後端分離。
前端在 fintrack-frontend,後端在 fintrack-backend,桌面應用只是“換了個殼子”。
可心理上的感覺不一樣:它不再是瀏覽器地址欄裏的東西,而是一個真正“裝在電腦上的軟件”。

3. 跨語言的思維切換

PHP 寫久了,寫 Go 的時候會下意識去找框架、找 ORM,結果發現 Go 的生態完全不一樣。
剛開始有點彆扭,但後來發現語言層面的簡潔反而讓我能更專注在業務邏輯上,不會被一堆“默認約定”牽着走。

4. 做點“無用”的項目很有意思

説實話,這個財務管理應用對別人來説可能沒什麼價值,畢竟現成的工具太多了。
但對我來説,它讓我嚐到了用 Go 做“非 Web 應用”的可能性,也多了一個貼合我需求的小工具。


展望

目前項目已經開源,可以直接下載到安裝包:

  • 項目倉庫:fintrack-backend

支持打包 Windows 和 Mac 版本,算是實現了我最初的目標。

接下來,我可能會繼續加一些功能:

  • 更好看的圖表分析;
  • 多賬本支持;
  • 導入/導出 CSV;
  • 甚至試試做移動端。

不過,就算後續不再加功能,這個項目也已經達到了我的目的:
它讓我走出了 PHP + Web 的慣性思維,嘗試了另一種可能。


很多時候,我們寫的小項目,在別人看來可能就是“又一個記賬軟件”,沒什麼價值。
但對自己來説,它代表的是一個學習過程,一個探索新方向的契機

所以,如果你也有類似的想法,不妨直接去做。
也許別人不一定用,但你自己的收穫,已經足夠大了。

user avatar ljc1212 Avatar a_yu_super Avatar kangkaidafangdezi Avatar tiandetuoba Avatar mengxiang_592395ab95632 Avatar jianfei Avatar wilburxu Avatar
Favorites 7 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.