全新Rust跨平台方案GPUI组件来袭
发布时间:2025-10-31
发布人:null
查看:104次
这是第一个应用:Longbridge Pro,使用 GPUI 组件构建。GPUI是一个由Zed的创建者开发的快速、高效的 Rust UI 框架 。
- 丰富性:60 多个跨平台桌面 UI 组件。
- 原生:灵感源自 macOS 和 Windows 控件,结合 shadcn/ui 设计,带来现代体验。
- 易用性:无状态
RenderOnce组件,简单易用。 - 可自定义:内置
Theme,ThemeColor支持多主题和基于变量的配置。 - 用途广泛:支持诸如
xs、、、和等sm尺寸。mdlg - 灵活布局:面板排列、调整大小和自由形式(平铺)布局的停靠布局。
- 高性能:虚拟化的表格和列表组件,可流畅渲染大数据。
- 内容渲染:原生支持 Markdown 和简单的 HTML。
- 图表:内置图表,用于可视化您的数据。
- 编辑器:高性能代码编辑器(支持高达 20 万行),带有 LSP(诊断、自动完成、悬停等)。
- 语法高亮:使用 Tree Sitter 为编辑器和 Markdown 组件提供语法高亮。
GPUI不是用electorn构建应用的方案,而是原生的。GPUI 是一个混合即时模式和保留模式的 GPU 加速的 Rust UI 框架,旨在支持各种应用程序。
由于我们正在开发 Zed 代码编辑器,GPUI 仍在积极开发中,目前仍处于 1.0 版本之前。版本之间经常会有不兼容的变更。您还需要使用最新版本的稳定版 Rust,并且操作系统为 macOS 或 Linux。请将以下内容添加到您的Cargo.toml:
大局
GPUI根据您的需求提供三种不同的寄存器:
- 状态管理和与
EntityGPUI 的通信。当您需要存储应用程序状态并在应用程序的不同部分之间进行通信时,您需要使用 GPUI 的实体。实体由 GPUI 所有,并且只能通过类似于 `<string>` 的智能指针访问Rc。app::context有关更多信息,请参阅相关模块。 - GPUI 提供基于视图的高级声明式 UI。GPUI 中的所有 UI 都始于视图。视图本质上是一个
Entity可渲染的对象,通过实现 `Render`Rendertrait 来实现。在每一帧开始时,GPUI 都会调用给定窗口根视图的渲染方法。视图构建一个元素树elements,使用类似 Tailwind 的 API 进行布局和样式设置,然后将其交给 GPUI 转换为像素。div有关渲染的通用工具,请参阅 `<View>` 元素。 - 使用 Elements 构建底层命令式 UI。Elements 是 GPUI 中 UI 的构建模块,它们为命令式 API 提供了一个简洁的封装,可满足您所需的灵活性和控制力。Elements 可以完全控制自身及其子元素的渲染方式,并可用于创建高效的大型列表视图、为代码编辑器实现自定义布局,以及任何您能想到的用途。
element有关更多信息,请参阅模块。
每个寄存器都有一个或多个对应的上下文,所有 GPUI 服务都可以访问这些上下文。该上下文是您与 GPUI 交互的主要接口,并在整个框架中被广泛使用。
其他资源
除了上述系统之外,GPUI 还提供一系列较小的服务,这些服务对于构建复杂的应用程序非常有用:
- 动作是用户自定义的结构体,用于将按键操作转换为用户界面中的逻辑运算。您可以使用它来实现键盘快捷键,例如 cmd-q。
action有关更多信息,请参阅模块。 - 平台服务,例如
quit the app或,open a URL可作为方法在上提供app::App。 - 一个与平台事件循环集成的异步执行器。
executor更多信息请参阅模块说明。 - 该
[gpui::test]宏提供了一种便捷的方式来编写 GPU-UI 应用程序的测试。测试也有其自身的上下文,它TestAppContext提供了模拟常见平台输入的方法。有关更多详细信息,请参阅相关模块app::test_context。test
你可以在github上看到:https://github.com/zed-industries/zed/tree/main/crates/gpui
由于部分文章来自用户发布,或者网络收集,我们无法考证原作者并及时联系。如您认为该文章或内容有侵权,请在发布后与我们取得联系删除。您可以点击网站下方的投诉举报,或者文章内页的举报图标按钮进行举报。我们会及时删除信息。部分用户创作内容可能标记版权信息,如您转载请提前联系并获得书面许可(盖章)。
欢迎发布评论
登录后即可发言
最近评论
当前评论为精选或存在缓存,点击阅读更多查看最新
暂无更多数据




