
我很高興終於能宣布,Wails v2 現已在 Linux 上進入 Beta 階段!頗具諷刺意味的是,最早的 v2 實驗正是在 Linux 上進行,最終卻成了最後發布的平台。不過,今天的 v2 與最初的實驗已大不相同。話不多說,讓我們來看看新功能:
新功能

許多人都要求支援原生選單,Wails 終於滿足了這項需求。現在已可使用應用程式選單,並支援大多數原生選單功能,包括標準選單項目、核取方塊、選項群組、子選單和分隔線。
在 v1 中,許多人都希望能更充分地控制視窗本身。我很高興地宣布,現在已有專為此用途設計的新執行階段 API。它功能豐富,並支援多螢幕設定。對話方塊 API 也有所改進:現在,你可以使用具備豐富設定選項的現代化原生對話方塊,滿足所有對話方塊需求。
不必綑綁資源
v1 的一大痛點,是必須將整個應用程式壓縮成單一 JS 與 CSS 檔案。我很高興地宣布,在 v2 中完全不必以任何形式綑綁資源。想載入本機圖片嗎?使用具有本機 src 路徑的<../../../assets/blog-images>標籤。想使用很酷的字型嗎?把它複製進來,然後在 CSS 中加入其路徑即可。
哇,聽起來就像網頁伺服器……
沒錯,它的運作方式就像網頁伺服器,但它並不是網頁伺服器。
那麼,我該如何納入資源?
只要將一個包含所有資源的embed.FS傳入應用程式設定即可。這些資源甚至不必位於頂層目錄,Wails 會自行處理。
全新的開發體驗
既然資源不再需要綑綁,就能帶來全新的開發體驗。新的wails dev命令會建置並執行應用程式,但不會使用embed.FS中的資源,而是直接從磁碟載入。
它還提供下列額外功能:
- 熱重新載入——前端資源有任何變更時,都會觸發應用程式前端自動重新載入
- 自動重建——Go 程式碼有任何變更時,都會重新建置並啟動應用程式
此外,系統會在連接埠34115上啟動網頁伺服器,將應用程式提供給任何連線至該伺服器的瀏覽器。所有已連線的網頁瀏覽器都會回應系統事件,例如資源變更時的熱重新載入。
使用 Go 時,我們習慣在應用程式中處理結構體。將結構體傳送至前端,並在應用程式中將其用作狀態,通常很有幫助。在 v1 中,這個過程大多必須手動完成,對開發人員而言有些負擔。我很高興地宣布,在 v2 中,只要應用程式以開發模式執行,就會自動為所有作為已繫結方法輸入或輸出參數的結構體產生 TypeScript 模型。如此即可在這兩個環境之間順暢交換資料模型。
除此之外,系統還會動態產生另一個 JS 模組,封裝所有已繫結的方法。這會為你的方法提供 JSDoc,讓 IDE 能夠提供程式碼自動完成與提示。在封裝 Go 程式碼的自動產生模組中按下 Tab 鍵,就能自動匯入資料模型,真的非常酷!
遠端範本

讓應用程式能夠快速啟動並執行,一直是 Wails 專案的主要目標。最初推出時,我們嘗試支援當時許多現代化框架:react、vue 和 angular。前端開發領域充斥著各種強烈主張、變化迅速,而且很難持續掌握最新動態!因此,我們發現基礎範本很快就會過時,造成維護上的困擾。這也意味著,我們無法為最新、最出色的技術堆疊提供很酷的現代化範本。
在 v2 中,我希望賦予社群更多自主能力,讓你們能自行建立及託管範本,而不必依賴 Wails 專案。因此,現在你可以使用由社群支援的範本建立專案!我希望這能鼓勵開發人員打造充滿活力的專案範本生態系統。我真的很期待開發者社群會創造出什麼成果!
交叉編譯至 Windows
由於 Windows 版 Wails v2 完全以 Go 實作,因此無須 docker 即可建置以 Windows 為目標的平台版本。

結語
正如我在 Windows 版本資訊中所說,Wails v2 代表著本專案的新基礎。此版本的目標是收集大家對新方法的意見,並在正式發布前排除所有錯誤。非常歡迎你提供意見!請前往v2 Beta討論區提出任何意見。
支援 Linux 是很困難的。我們預期這個 Beta 版會有一些特殊問題。請提交詳細的錯誤報告,協助我們更好地幫助你!
最後,我要特別感謝所有專案贊助者;他們的支持在幕後以許多方式推動著本專案。
我很期待看到大家在本專案令人振奮的下一階段中使用 Wails 打造出什麼!
Lea。
附註:v2 正式版已經不遠了!
再附註:如果你或你的公司認為 Wails 很實用,請考慮贊助本專案。謝謝!