空闲窗口保持休眠
界面没有变化时,窗口保持休眠。信号只更新相关属性,事件中的更新会合并为一次重绘。
Pre-alpha接口可能变更
使用 Go、TypeScript 或 Rust 开发原生界面,支持快速增量构建、细粒度响应式和无障碍组件,共享同一个 GPU 渲染器。
在同一台 Mac 上测量 QuickGUI Go、QuickGUI TypeScript、QuickGUI Rust、GPUI、Tauri 和 Electron 的空闲内存与安装体积。每个应用都运行相同的任务管理器,包含 1,000 条任务。
一个 1,100 × 720 窗口,加载相同的 1,000 条任务,每页保留 100 行,并选中第一条任务。每个框架重新启动 3 次,每次至少等待 30 秒,并要求内存稳定、CPU 不超过 1% 的状态持续 15 秒,再进行 10 次空闲采样。柱条表示各次启动中位数的中位数,端点线表示它们的范围。
内存为应用及渲染辅助进程的物理占用之和,包括 WebKit 或 Chromium 的渲染、GPU 和网络进程,不包含自动填充及其他 macOS 系统服务。采样期间 CPU 和内存必须保持稳定,截图在采样结束后进行。数据包含压缩内存,使用与活动监视器一致的十进制 MB(1,000,000 字节),不强制垃圾回收或清空缓存。
体积统计 .app 内实际分发的文件,包括原生库和框架。QuickGUI TypeScript 包含 Bun 和 Solid 2,QuickGUI Rust 将原生核心链接进可执行文件,GPUI 将 Zed 的 GPU UI 框架打进可执行文件,Electron 包含 Chromium 和 Node,不含系统提供的 WebKit 等框架。这是安装体积,而非压缩下载大小。
演示支持搜索、状态筛选、翻页、备注编辑和完成操作。数据仅在当前会话的内存中保存,不使用数据库或网络服务。图表衡量应用加载后的空闲占用,不代表交互吞吐量。结果会随应用、设备和操作系统变化。QuickGUI 使用开发版本构建,每项结果均记录了对应的代码版本。

界面没有变化时,窗口保持休眠。信号只更新相关属性,事件中的更新会合并为一次重绘。
重新编译 Go、TypeScript 或 Rust 应用时,复用原生运行时。缩短反馈周期,把更多时间留给界面打磨。
使用 Flexbox、CSS Grid 和熟悉的样式选项,在 Go、TypeScript 或 Rust 中组合布局并复用组件样式。
一大批可访问的无样式组件——菜单、对话框、弹出层、select、combobox、标签页、表格、树——随你定制
支持文本选择、编辑、撤销、输入法、emoji 和从右到左的文字。
屏幕阅读器看到的是真实的按钮、列表和文本, 无需额外代码
虚拟化表格随滚动挂载可见行,轻松管理较大的历史记录和数据视图。
真实窗口、系统菜单、文件对话框、托盘图标和通知,都是应用的一部分。
quickgui dev 边改边跑;quickgui build 直接产出已签名、可安装的发布版本
同一个响应式计数器,三种熟悉的语言。选择语言,查看对应代码。
func Counter() *ui.Element {
count, setCount := ui.CreateSignal(0)
return ui.View().
FlexCol().
SizeFull().
ItemsCenter().
JustifyCenter().
Gap(20).
Bg("#090d16").
TextColor("#e2e8f0").
Child(ui.Text("Count: ", count())).
Child(ui.Button().
OnClick(func() { setCount(count() + 1) }).
Padding(12).
RoundedLg().
Bg("#2563eb").
Hover(func(s ui.StyleBuilder) ui.StyleBuilder { return s.BackgroundColor("#3b82f6") }).
Child("Increment"))
}
链式原生视图、可组合样式与信号,让界面随状态同步更新。
Go 文档在 macOS 的 Go、TypeScript 或 Rust 应用中嵌入真正的 SwiftUI 控件,与 QuickGUI 组件一起使用。
ui.SwiftUI.Host(
ui.SwiftUIHostProps{MatchContents: true},
func() *native.Node {
return ui.SwiftUI.Button(ui.SwiftUIButtonProps{
Label: "Save changes",
SystemImage: "checkmark",
Modifiers: []ui.SwiftUIModifier{
ui.SwiftUI.ButtonStyle("glass"),
},
})
},
)
bunx @quickgui/cli init my-app
cd my-app
quickgui devquickgui fmt
quickgui buildquickgui build --target darwin-arm64 \
--sign "Developer ID Application: Example (TEAMID)" \
--notarize quickgui-notary