Aller au contenu

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

  1. Générer le projet

    Fenêtre de terminal
    wails3 init -n myapp
    cd myapp

    Cela crée un nouveau projet avec le modèle par défaut Vanilla + Vite (HTML/CSS/JS brut avec le bundler Vite).

  2. 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
  3. Lancer l’application

    Fenêtre de terminal
    wails3 dev

    L’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.

Comprendre le code qui rend cela possible.

Ouvrez greetservice.go :

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 :

  1. Service - Une struct Go avec des méthodes exportées
  2. Méthode exportée - Greet est en majuscule, ce qui la rend disponible pour le frontend
  3. Logique simple - Prend un nom, renvoie une salutation
  4. Sécurité des types - Les types d’entrée et de sortie sont définis

Ouvrez main.go et trouvez l’enregistrement du service :

main.go
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.

Ouvrez frontend/src/main.js :

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 :

  1. Liaisons générées automatiquement - GreetService est importé depuis du code généré
  2. Appels typés - Les noms de méthodes et les signatures correspondent à votre code Go
  3. Asynchrone par défaut - Tous les appels Go retournent des Promises
  4. Gestion des erreurs - Les erreurs de Go sont capturées dans try/catch

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” »
  1. 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
    }
  2. L’application se reconstruit automatiquement

    Enregistrez le fichier et wails3 dev reconstruira automatiquement votre code Go et redémarrera l’application.

  3. 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.

Lorsque vous êtes prêt à distribuer votre application :

Fenêtre de terminal
wails3 build

Ce 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).

Structure du projet

  • main.go pour le backend Go
  • frontend/ pour le code UI
  • Taskfile.yml pour 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 dev pour 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é.