🦜
Go製のGUIフレームワークWails3を試す
$ go install github.com/wailsapp/wails/v3/cmd/wails3@latest
$ wails3 init -n Wails3Sample -t svelte
Creating project
----------------
Project Name | Wails3Sample
Project Directory | C:\Users\nobo\Dropbox\Sandbox\wails3\Wails3Sample
Template | Svelte + Vite
Template Source | https://wails.io
Project 'Wails3Sample' created successfully.
$ cd Wails3Sample
$ wails3 task dev
Wails2系からの変更点
- Taskfile機能をwails3コマンドに内包
- システムトレイメニュー機能追加
- マルチウインドウ対応追加
- JS/TSバインディング生成のフォルダ構成が固定された「
frontend/bindings
」 - バインディング生成対象は「Service」と呼ばれ、Appインスタンスに渡したものが生成対象になる
- イベントハンドリング時の引数は「any」から「[]any」に変更された
- wails.jsonが不要になった(vite.config.jsonやTaskfileに集約された)
フロントエンド側
npm install "@wailsio/runtime"
import * as Wails from "@wailsio/runtime";
// Emit
Wails.Events.Emit({ name: "name", data: any });
// On
Wails.Events.On("name", async (args: any) => {
let data = args.data;
});
Go側
import "github.com/wailsapp/wails/v3/pkg/application"
func main() {
app := application.New(application.Options{...})
app.EmitEvent("name", data)
app.OnEvent("name", func(ev *application.CustomEvent) {
data := ev.Data.(...)
...
})
}
main以外からappインスタンスアクセス
import "github.com/wailsapp/wails/v3/pkg/application"
application.Get().EmitEvent("name", data)
Discussion