Votre première application
Créez une application Wails fonctionnelle en 10 minutes
Nous allons créer une application simple de salutations qui illustre les concepts fondamentaux de Wails :
- Un backend Go qui gère la logique
- Un frontend qui appelle des fonctions Go
- Des liaisons avec sûreté des types
- Le rechargement à chaud pendant le développement
Durée nécessaire : 10 minutes
Créez votre projet
Générez le projet
wails3 init -n myapp
cd myapp
Cette commande crée un projet avec le modèle Vanilla + Vite par défaut (HTML/CSS/TypeScript avec l’outil de regroupement Vite).
Comprenez la structure du projet
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 tasksExécutez l’application
wails3 dev
L’application s’ouvre et affiche une interface de salutations. Saisissez votre nom et cliquez sur « Greet » : le backend Go traite votre saisie et renvoie une salutation.
Fonctionnement
Examinons le code qui assure ce fonctionnement.
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 structure Go avec des méthodes exportées
- Méthode exportée –
Greetcommence par une majuscule, ce qui la rend accessible au frontend - Logique simple – Reçoit un nom et renvoie une salutation
- Sûreté des types – Les types d’entrée et de sortie sont définis
Enregistrement du service
Ouvrez main.go et recherchez l’enregistrement du service :
err := application.New(application.Options{
Name: "myapp",
Services: []application.Service{
application.NewService(&GreetService{}),
},
// ... other options
})Cela enregistre votre GreetService auprès de Wails et rend toutes ses méthodes exportées accessibles au frontend.
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 le code généré - Appels avec sûreté des types – Les noms et signatures des méthodes correspondent à votre code Go
- Asynchrones par défaut – Tous les appels Go renvoient des promesses
- Gestion des erreurs – Les erreurs provenant de Go sont interceptées dans un bloc try/catch
Personnalisez votre application
Ajoutons une fonctionnalité pour comprendre le flux de travail.
Ajoutez une fonctionnalité « Saluer plusieurs personnes »
Ajoutez la méthode à GreetService
Ajoutez ceci à 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 sera recompilée automatiquement
Enregistrez le fichier : wails3 dev recompilera automatiquement votre code Go et redémarrera l’application.
Utilisez-la dans le frontend
Ajoutez ceci à 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() : le tableau de salutations s’affichera.
Compilez pour la production
Lorsque vous êtes prêt à distribuer votre application :
wails3 build
Résultat de cette opération :
- Compile le code Go avec des optimisations
- Compile le frontend pour la production (version minifiée)
- Crée un exécutable natif dans
bin/
Sortie : bin/myapp.exe
Double-cliquez pour lancer l’application. Aucune dépendance n’est nécessaire (WebView2 fait partie de Windows).
Sortie : bin/myapp.app
Faites glisser l’application dans le dossier Applications ou double-cliquez dessus pour la lancer.
Sortie : bin/myapp
Lancez l’application avec ./bin/myapp ou créez un fichier .desktop pour votre lanceur.
Ce que nous avons appris
Structure du projet
main.gopour le backend Gofrontend/pour le code de l’interface utilisateurTaskfile.ymlpour les tâches de compilation
Services
- Créez des structures Go avec des méthodes exportées
- Enregistrez-les avec
application.NewService() - Les méthodes sont automatiquement disponibles dans le frontend
Liaisons
- Définitions TypeScript générées automatiquement
- Appels de fonctions avec vérification des types
- Asynchrones par défaut (promesses)
Flux de développement
wails3 devpour le rechargement à chaud- Les modifications du code Go déclenchent automatiquement une nouvelle compilation et un redémarrage
- Les modifications du frontend sont rechargées à chaud instantanément
Des questions ? Rejoignez Discord et posez-les à la communauté.