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
Projekt generieren
wails3 init -n myapp
cd myapp
Dadurch wird ein neues Projekt mit der Standardvorlage Vanilla + Vite erstellt (HTML/CSS/TypeScript mit dem Vite-Bundler).
Projektstruktur verstehen
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 tasksApp ausführen
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:
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:
- Service – eine Go-Struktur mit exportierten Methoden
- Exportierte Methode –
Greetbeginnt mit einem Großbuchstaben und ist dadurch für das Frontend verfügbar - Einfache Logik – nimmt einen Namen entgegen und gibt eine Begrüßung zurück
- Typsicherheit – Ein- und Ausgabetypen sind definiert
Service registrieren
Öffnen Sie main.go und suchen Sie die Service-Registrierung:
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:
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:
- Automatisch generierte Bindings –
GreetServicewird aus dem generierten Code importiert - Typsichere Aufrufe – Methodennamen und Signaturen entsprechen Ihrem Go-Code
- Standardmäßig asynchron – alle Go-Aufrufe geben Promises zurück
- 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
Methode zu GreetService hinzufügen
Fügen Sie Folgendes zu greetservice.go hinzu:
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
}Die App wird automatisch neu gebaut
Speichern Sie die Datei. wails3 dev baut Ihren Go-Code automatisch neu und startet die App neu.
Im Frontend verwenden
Fügen Sie Folgendes zu frontend/src/main.js hinzu:
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:
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).
Ausgabe: bin/myapp.app
In den Ordner „Programme“ ziehen oder zum Ausführen doppelklicken.
Ausgabe: bin/myapp
Mit ./bin/myapp ausführen oder eine .desktop-Datei für den Anwendungsstarter erstellen.
Was wir gelernt haben
Projektstruktur
main.gofür das Go-Backendfrontend/für den UI-CodeTaskfile.ymlfü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 devfü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.