SuperAPI AI 工具集

bubbletea

前端与建站

查看项目

更新于 10-15 17:29

技能介绍

Bubble Tea 是 Go 语言终端用户界面框架,采用 Elm 架构:不可变 Model、纯 Update 函数(返回新模型和 Cmd)、纯 View 函数(渲染字符串)。异步工作(HTTP、定时器、I/O)以 tea.Cmd 派发,返回 tea.Msg 交回 Update 处理。

核心模块:github.com/charmbracelet/bubbletea(核心运行时,v1 稳定版,v2 用 /v2 路径);github.com/charmbracelet/bubbles(内置组件:spinner、textinput、list、table、viewport、progress、paginator、help、key、textarea、stopwatch、timer、filepicker);github.com/charmbracelet/lipgloss(颜色、边框、内边距、布局等样式)。

tea.Model 接口:Init() Cmd、Update(Msg) (Model, Cmd)、View() string。模型方法建议用值接收者。tea.Cmd 是 func() tea.Msg,在 goroutine 中运行。组合命令可用 tea.Batch(并行)、tea.Sequence(串行)、tea.Tick(延迟一次)、tea.Every(周期触发)。从 Elm 循环外发送消息可调用 p.Send(msg)。

键盘输入通过 tea.KeyMsg 匹配,可用字符串、KeyType 或 raw runes;推荐使用 bubbles/key 定义结构化键位,自动生成帮助文本。程序选项包括 tea.WithAltScreen、WithMouseCellMotion、WithContext、WithOutput、WithInput、WithFPS 等。窗口尺寸通过 tea.WindowSizeMsg 处理,可实现响应式布局。

Bubbles 组件各有自己的小 Elm 循环,需嵌入父模型并在 Update 中转发消息。列表组件可用默认委托(list.NewDefaultDelegate)或自定义委托。视口组件配合鼠标滚轮需开启 tea.WithMouseCellMotion。样式使用 lipgloss,支持 ANSI-16/256/真彩色、自适应颜色、盒模型、边框、JoinHorizontal/JoinVertical/Place 等组合。

适用场景:创建交互式 CLI 工具、仪表盘、选择器、表单、分页浏览等终端界面。限制:此技能针对 v1 API(github.com/charmbracelet/bubbletea),v2 迁移说明在资料末尾有简短提及;部分内容(如 paginator 的完整样式)在资料中被截断。