120 FPS 渲染
每一帧都由 GPU 绘制,高密度界面依然稳定流畅,不掉帧。
- RenderOnce
- GPU
一个综合性的 Rust 桌面开发框架,集完整 UI 系统、数据表格、Dock 布局、图表与代码编辑器于一体,并可用 JavaScript 扩展;从第一天起用于构建 Longbridge Pro。
gpui-kit = "0.6.0"use gpui_kit::component::{button::*, *};
impl Render for HelloWorld {
fn render(&mut self, _: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
div()
.v_flex()
.gap_2()
.items_center()
.child("Hello, World!")
.child(
Button::new("ok")
.primary()
.label("Let's Go!")
.on_click(cx.listener(Self::go)),
)
}
}复杂桌面应用真正需要的系统能力,都已整合在框架之中。
每一帧都由 GPU 绘制,高密度界面依然稳定流畅,不掉帧。
虚拟滚动、列固定、列宽调整、排序与单元格选择,可承载数十万行。
只渲染可见区域,超长列表滚动依然保持流畅。
Rope 存储,20 万行仍保持稳定性能;内置 Tree-sitter 高亮与 LSP 诊断、补全、悬浮提示。
面板停靠、拖拽重排、缩放与 Tiles 自由布局,并可序列化保存。
基于语义化 token 的明暗与多主题切换,而非无尽的样式字段。
使用 gpui-component 保持统一风格,基于 gpui-base 构建自己的设计系统,或用 gpui-shell 让应用可以被 JavaScript 扩展。
gpui-component 提供完整、成熟且开箱即用的视觉与交互系统。
Button::new("save")
.primary()
.label("Save changes")
.on_click(cx.listener(Self::save))复用焦点、选择、浮层与虚拟化行为,视觉完全由你决定。
Button::new("save")
.on_click(cx.listener(Self::save))
.rounded_md()
.child("Save changes")宿主仍然是 Rust,扩展是 JavaScript:脚本能碰到什么由宿主逐项授予,界面则在同一个进程里画出来。
import { Button, text } from "gpui";
Button.new("save")
.on_click((_e, cx) => this.save(cx))
.child(text("Save changes"))行为属于基础层。视觉属于应用。
gpui-base 处理困难的交互机制:焦点、浮层定位、虚拟化与无障碍;你的产品决定它们最终呈现的样子。
探索 gpui-base