Mitwirken

Diese Dokumentation bearbeiten

Übersetzen Sie die Dokumentation oder öffnen Sie das vollständige Projekt auf Ihrem Computer.

Es wird nichts veröffentlicht, bevor Sie Ihre Arbeit zur Übermittlung freigeben.

Ihre erste App

Erstellen Sie in 10 Minuten eine funktionsfähige Wails-Anwendung

Wir erstellen eine einfache Begrüßungsanwendung, die die grundlegenden Konzepte von Wails veranschaulicht:

  • Go-Backend zur Verwaltung der Logik
  • Frontend, das Go-Funktionen aufruft
  • Typsichere Bindings
  • Hot Reload während der Entwicklung

Benötigte Zeit: 10 Minuten

Projekt erstellen

1

Projekt generieren

bash
wails3 init -n myapp
cd myapp

Dadurch wird ein neues Projekt mit der Standardvorlage Vanilla + Vite erstellt (HTML/CSS/TypeScript mit dem Vite-Bundler).

2

Projektstruktur verstehen

text
myapp/
├── main.go              # Application entry point
├── greetservice.go      # Greet service
├── frontend/            # Your UI code
│   ├── index.html       # HTML entry point
│   ├── src/
│   │   └── main.ts      # Frontend TypeScript
│   ├── public/
│   │   └── style.css    # Styles
│   ├── package.json     # Frontend dependencies
│   ├── tsconfig.json    # TypeScript configuration
│   └── vite.config.ts   # Vite bundler config
├── build/               # Build configuration
└── Taskfile.yml         # Build tasks
3

App ausführen

bash
wails3 dev

Die App öffnet sich mit einer Begrüßungsoberfläche. Geben Sie Ihren Namen ein und klicken Sie auf „Greet“. Das Go-Backend verarbeitet Ihre Eingabe und gibt eine Begrüßung zurück.

Funktionsweise

Sehen wir uns den Code an, der diese Funktion ermöglicht.

Das Go-Backend

Öffnen Sie greetservice.go:

greetservice.go
go
package main

import (
	"fmt"
)

type GreetService struct{}

func (g *GreetService) Greet(name string) string {
	return fmt.Sprintf("Hello %s, It's show time!", name)
}

Wichtige Konzepte:

  1. Service – eine Go-Struktur mit exportierten Methoden
  2. Exportierte Methode – Greet beginnt mit einem Großbuchstaben und ist dadurch für das Frontend verfügbar
  3. Einfache Logik – nimmt einen Namen entgegen und gibt eine Begrüßung zurück
  4. Typsicherheit – Ein- und Ausgabetypen sind definiert

Service registrieren

Öffnen Sie main.go und suchen Sie die Service-Registrierung:

main.go
go
err := application.New(application.Options{
    Name: "myapp",
    Services: []application.Service{
        application.NewService(&GreetService{}),
    },
    // ... other options
})

Dadurch wird GreetService bei Wails registriert, sodass alle exportierten Methoden für das Frontend verfügbar sind.

Das Frontend

Öffnen Sie frontend/src/main.js:

frontend/src/main.js
javascript
import {GreetService} from "../bindings/changeme";

window.greet = async () => {
    const nameElement = document.getElementById('name');
    const resultElement = document.getElementById('result');

    const name = nameElement.value;
    if (!name) {
        return;
    }

    try {
        const result = await GreetService.Greet(name);
        resultElement.innerText = result;
    } catch (err) {
        console.error(err);
    }
};

Wichtige Konzepte:

  1. Automatisch generierte Bindings – GreetService wird aus dem generierten Code importiert
  2. Typsichere Aufrufe – Methodennamen und Signaturen entsprechen Ihrem Go-Code
  3. Standardmäßig asynchron – alle Go-Aufrufe geben Promises zurück
  4. Fehlerbehandlung – Fehler aus Go werden mit try/catch abgefangen

App anpassen

Fügen wir eine neue Funktion hinzu, um den Arbeitsablauf nachzuvollziehen.

Funktion „Greet Many“ hinzufügen

1

Methode zu GreetService hinzufügen

Fügen Sie Folgendes zu greetservice.go hinzu:

greetservice.go
go
func (g *GreetService) GreetMany(names []string) []string {
    greetings := make([]string, len(names))
    for i, name := range names {
        greetings[i] = fmt.Sprintf("Hello %s!", name)
    }
    return greetings
}
2

Die App wird automatisch neu gebaut

Speichern Sie die Datei. wails3 dev baut Ihren Go-Code automatisch neu und startet die App neu.

3

Im Frontend verwenden

Fügen Sie Folgendes zu frontend/src/main.js hinzu:

frontend/src/main.js
javascript
window.greetMany = async () => {
    const names = ['Alice', 'Bob', 'Charlie'];
    const greetings = await GreetService.GreetMany(names);
    console.log(greetings);
};

Öffnen Sie die Browserkonsole und rufen Sie greetMany() auf. Daraufhin wird das Array mit den Begrüßungen angezeigt.

Für den Produktiveinsatz bauen

Wenn Sie Ihre App verteilen möchten:

bash
wails3 build

Das geschieht dabei:

  • Kompiliert den Go-Code mit Optimierungen
  • Baut das Frontend für den Produktiveinsatz (minifiziert)
  • Erstellt eine native ausführbare Datei in bin/

Ausgabe: bin/myapp.exe

Zum Ausführen doppelklicken. Es sind keine Abhängigkeiten erforderlich (WebView2 ist Bestandteil von Windows).

Was wir gelernt haben

Projektstruktur

  • main.go für das Go-Backend
  • frontend/ für den UI-Code
  • Taskfile.yml für Build-Aufgaben

Services

  • Go-Structs mit exportierten Methoden erstellen
  • Mit application.NewService() registrieren
  • Methoden sind automatisch im Frontend verfügbar

Bindings

  • Automatisch generierte TypeScript-Definitionen
  • Typsichere Funktionsaufrufe
  • Standardmäßig asynchron (Promises)

Entwicklungsworkflow

  • wails3 dev für Hot Reload
  • Go-Änderungen lösen automatisch einen neuen Build und Neustart aus
  • Frontend-Änderungen werden sofort per Hot Reload übernommen

Fragen? Treten Sie Discord bei und fragen Sie die Community.

Seite bearbeiten

Zuletzt aktualisiert: