Votre première application
Nous allons construire une simple application de salutation qui démontre les concepts clés de Wails :
- Backend Go gérant la logique
- Frontend appelant les fonctions Go
- Liaisons typées (bindings)
- Rechargement à chaud (hot reload) pendant le développement
Temps nécessaire pour compléter : 10 minutes
Créer votre projet
Section intitulée « Créer votre projet »-
Générer le projet
Fenêtre de terminal wails3 init -n myappcd myappCela crée un nouveau projet avec le modèle par défaut Vanilla + Vite (HTML/CSS/JS brut avec le bundler Vite).
-
Comprendre la structure du projet
myapp/├── main.go # Point d'entrée de l'application├── greetservice.go # Service de salutation├── frontend/ # Votre code UI│ ├── index.html # Point d'entrée HTML│ ├── src/│ │ └── main.js # JavaScript du frontend│ ├── public/│ │ └── style.css # Styles│ ├── package.json # Dépendances du frontend│ └── vite.config.js # Configuration du bundler Vite├── build/ # Configuration de la compilation└── Taskfile.yml # Tâches de compilation -
Lancer l’application
Fenêtre de terminal wails3 devL’application s’ouvre en affichant une interface de salutation. Entrez votre nom et cliquez sur “Saluer” - le backend Go traite votre entrée et renvoie une salutation.
Comment cela fonctionne
Section intitulée « Comment cela fonctionne »Comprendre le code qui rend cela possible.
Le backend Go
Section intitulée « Le backend Go »Ouvrez 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)}Concepts clés :
- Service - Une struct Go avec des méthodes exportées
- Méthode exportée -
Greetest en majuscule, ce qui la rend disponible pour le frontend - Logique simple - Prend un nom, renvoie une salutation
- Sécurité des types - Les types d’entrée et de sortie sont définis
Enregistrer le Service
Section intitulée « Enregistrer le Service »Ouvrez main.go et trouvez l’enregistrement du service :
err := application.New(application.Options{ Name: "myapp", Services: []application.Service{ application.NewService(&GreetService{}), }, // ... other options})Cela enregistre votre GreetService avec Wails, rendant toutes ses méthodes exportées disponibles pour le frontend.
Le Frontend
Section intitulée « Le Frontend »Ouvrez 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); }};Concepts clés :
- Liaisons générées automatiquement -
GreetServiceest importé depuis du code généré - Appels typés - Les noms de méthodes et les signatures correspondent à votre code Go
- Asynchrone par défaut - Tous les appels Go retournent des Promises
- Gestion des erreurs - Les erreurs de Go sont capturées dans try/catch
Personnaliser votre application
Section intitulée « Personnaliser votre application »Ajoutons une nouvelle fonctionnalité pour comprendre le flux de travail.
Ajouter une fonctionnalité “Saluer plusieurs personnes”
Section intitulée « Ajouter une fonctionnalité “Saluer plusieurs personnes” »-
Ajouter la méthode à GreetService
Ajoutez ceci à
greetservice.go:greetservice.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} -
L’application se reconstruit automatiquement
Enregistrez le fichier et
wails3 devreconstruira automatiquement votre code Go et redémarrera l’application. -
L’utiliser dans le frontend
Ajoutez ceci à
frontend/src/main.js:frontend/src/main.js window.greetMany = async () => {const names = ['Alice', 'Bob', 'Charlie'];const greetings = await GreetService.GreetMany(names);console.log(greetings);};Ouvrez la console du navigateur et appelez
greetMany()- vous verrez le tableau de salutations.
Compiler pour la production
Section intitulée « Compiler pour la production »Lorsque vous êtes prêt à distribuer votre application :
wails3 buildCe que cela fait :
- Compile le code Go avec des optimisations
- Compile le frontend pour la production (minifié)
- Crée un exécutable natif dans
build/bin/
Sortie : build/bin/myapp.exe
Double-cliquez pour exécuter. Aucune dépendance nécessaire (WebView2 fait partie de Windows).
Sortie : build/bin/myapp.app
Glissez dans le dossier Applications ou double-cliquez pour exécuter.
Sortie : build/bin/myapp
Exécutez avec ./build/bin/myapp ou créez un fichier .desktop pour votre lanceur.
Ce que nous avons appris
Section intitulée « Ce que nous avons appris »Structure du projet
main.gopour le backend Gofrontend/pour le code UITaskfile.ymlpour les tâches de compilation
Services
- Créer des structs Go avec des méthodes exportées
- Enregistrer avec
application.NewService() - Les méthodes sont automatiquement disponibles dans le frontend
Liaisons
- Définitions TypeScript générées automatiquement
- Appels de fonctions typés
- Asynchrone par défaut (Promises)
Flux de développement
wails3 devpour le rechargement à chaud- Les modifications Go reconstruisent et redémarrent automatiquement
- Les modifications du frontend se rechargent à chaud instantanément
Des questions ? Rejoignez Discord et posez vos questions à la communauté.