charm/bubbletea Go: Komplettleitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

charm/bubbletea für Go: Komplettleitfaden mit Beispielen

1. Was ist Bubble Tea und warum braucht man es?

Bubble Tea ist ein leistungsstarkes, elegantes und produktives Framework zur Erstellung von Terminal-Benutzeroberflächen (TUI) in Go. Inspiriert von der Architektur der funktionalen Programmierung in Elm, bietet es ein einfaches, aber unglaublich flexibles Modell, das auf drei Kernkonzepten basiert: Model (Zustand), Update (Aktualisierungsfunktion) und View (Darstellungsfunktion).

Warum Bubble Tea verwenden? Wenn Ihnen langweilige, einzeilige CLI-Tools zuwider sind und Sie interaktive, schöne und reaktionsschnelle Anwendungen direkt im Terminal erstellen möchten, ist dies Ihr Werkzeug. Mit Bubble Tea können Sie alles bauen – von einfachen Eingabeformularen und Auswahllisten bis hin zu komplexen Dateimanagern, Musikplayern, Spielen und Dashboards. Es übernimmt die gesamte niedrigschwellige Terminalarbeit (Signalverarbeitung, Cursorsteuerung, Rendering), sodass Sie sich auf die Anwendungslogik konzentrieren können.

Die Bibliothek ist Teil der Charm-Ökosystems, das auch andere nützliche Tools umfasst, wie Bubbles (eine Sammlung vorgefertigter Komponenten wie Textfelder, Spinner, Fortschrittsbalken) und Lip Gloss (eine Bibliothek zur Stilausgabe). Zusammen bilden sie ein komplettes Set zur Erstellung professioneller TUI-Anwendungen.

2. Installation

Die Installation der Bibliothek erfolgt auf dem Standardweg für Go:

go get github.com/charmbracelet/bubbletea@latest

Für die Verwendung vorgefertigter Komponenten (Widgets) wird außerdem die Installation des Pakets bubbles empfohlen:

go get github.com/charmbracelet/bubbles@latest

Und für die Stilisierung:

go get github.com/charmbracelet/lipgloss@latest

3. Schnellstart – Minimales funktionierendes Beispiel

Erstellen Sie eine Datei main.go und fügen Sie den folgenden Code ein. Diese Anwendung zählt die Anzahl der Tastendrücke. Drücken Sie Strg+C zum Beenden.

package main

import (
    "fmt"
    "os"
    tea "github.com/charmbracelet/bubbletea"
)

// 1. Model – speichert den Zustand der Anwendung.
type model struct {
    count int
}

// 2. Init – gibt den anfänglichen Befehl zurück (normalerweise nil).
func (m model) Init() tea.Cmd {
    return nil
}

// 3. Update – verarbeitet eingehende Nachrichten und gibt ein neues Modell und einen Befehl zurück.
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    switch msg := msg.(type) {
    case tea.KeyMsg:
        switch msg.String() {
        case "ctrl+c":
            return m, tea.Quit // Befehl zum Beenden
        default:
            m.count++
            return m, nil
        }
    }
    return m, nil
}

// 4. View – gibt einen String zurück, der im Terminal angezeigt wird.
func (m model) View() string {
    return fmt.Sprintf("Tastendrücke: %d\n\nDrücken Sie eine beliebige Taste. Zum Beenden drücken Sie Strg+C.", m.count)
}

func main() {
    p := tea.NewProgram(model{})
    if _, err := p.Run(); err != nil {
        fmt.Printf("Fehler: %v", err)
        os.Exit(1)
    }
}

Starten Sie die Anwendung:

go run main.go

4. Kernmethoden und Typen

In Bubble Tea sind die Schlüsselelemente Interfaces und Funktionen, nicht Klassen. Hier sind die 8 wichtigsten Elemente.

4.1. tea.NewProgram

Signatur: func NewProgram(

Empfehlungen