Tutorial(Optional)

デスクトップアプリとして実行する(任意)

この手順は任意です。ネイティブWebViewで動かしたい場合のみ進んでください。

Optional Step 1

共有アプリロジックを切り出す

// internal/app/app.go(Webとデスクトップで共有)
package app

import (
    mb "github.com/YoshihideShirai/marionette/backend"
    mf "github.com/YoshihideShirai/marionette/frontend"
)

func New() *mb.App {
    app := mb.New()
    app.Page("/", func(ctx *mb.Context) mf.Node {
        return mf.TextComponent(mf.TextProps{Text: "Hello World", Size: "lg"})
    })
    return app
}

Optional Step 2

cmd/配下にWeb/デスクトップのエントリポイントを作る

// cmd/marionette-hello-web/main.go
package main

import "marionette-hello/internal/app"

func main() {
    a := app.New()
    if err := a.Run("127.0.0.1:8080"); err != nil {
        panic(err)
    }
}
// cmd/marionette-hello-desktop/main.go
package main

import (
    "log"

    "marionette-hello/internal/app"
    "github.com/YoshihideShirai/marionette/desktop"
)

func main() {
    a := app.New()
    if err := desktop.Run(a, desktop.Options{Title: "Marionette Desktop", Width: 1200, Height: 800}); err != nil {
        log.Fatal(err)
    }
}

Optional Step 3

コマンドで切り替える

go run ./cmd/marionette-hello-web
go run -tags marionette_desktop ./cmd/marionette-hello-desktop

Linuxではデスクトップ用コマンド実行前に GTK 3 / WebKitGTK の開発パッケージをインストールしてください。

この先は Components Gallery を見てUIを拡張してください。