GPUIX元素完全参考:11个原生元素一次看懂(附代码示例)
GPUIX元素完全参考11个原生元素一次看懂附代码示例【免费下载链接】gpuixNode.js React bindings for Zed GPUI.项目地址: https://gitcode.com/gh_mirrors/gp/gpuixGPUIX是 Zed 编辑器 GPU 渲染框架 GPUI 的 React 绑定库让你用 React 和 TypeScript 构建直接渲染到 GPU 的原生桌面应用——没有 Electron没有 Web 视图。本文带你一次看懂 GPUIX 的全部11 个原生元素从最基础的div和text到语法高亮代码块code、diff 查看器diff、Markdown 渲染markdown再到虚拟列表virtual-list和浮层anchored并附可直接上手的代码示例。上面这个 Waku 风格的聊天应用完全由 GPUIX 驱动侧边栏、虚拟滚动消息列表、输入框、markdown渲染器全部是原生元素。GPUIX 原生元素速查表GPUIX 共提供 11 个已实现的宿主元素另有一个规划中的canvas完整清单见 README.md 的 Supported Elements 一节元素一句话说明典型用途div弹性布局容器卡片、按钮、布局骨架text可选中、可复制的文本标签、段落codeTree-sitter 语法高亮代码块代码展示diff统一 diff 查看器支持词级高亮代码评审视图markdownGitHub 风格 Markdown文档、聊天消息input原生单行文本编辑器搜索框textarea原生多行、自动增高编辑器聊天输入框virtual-list只构建可视区域的长列表消息流、大数据列表img位图/SVG 彩色图片头像、插图svg可着色的单色 SVG 图标工具栏图标anchored相对锚点定位的浮层菜单、Tooltip每个元素在 Rust 侧都有独立的实现文件核心自定义元素集中在 packages/native/src/custom_elements/ 目录元素类型定义可查 packages/react/src/types/host.ts。布局与文本div与text这两个是最基础的元素撑起整个应用的骨架。div支持完整的 flexbox 布局text支持所有文字样式且所有文本天生可选中复制。div style{{ display: flex, gap: 8, padding: 16, backgroundColor: #313244 }} text style{{ color: #ffffff, fontSize: 18 }}Hello GPUIX!/text /div两个新手必须知道的要点文本颜色默认是黑色与 CSS 不同GPUI 不会从父元素继承color务必显式设置。hover / active 是原生样式对象写在style里由 Rust 直接应用零 JavaScript 往返。div style{{ backgroundColor: #313244, borderRadius: 8, padding: 12, hover: { backgroundColor: #45475a }, active: { backgroundColor: #585b70 }, }} 按钮 /div文本三件套markdown、code、diff这是 GPUIX 的杀手级元素 三个文本组件在 Rust 中用 Tree-sitter 计算语法高亮颜色来自主题而非布局高亮延迟到达也不会重排且全部支持跨元素拖选复制。三者同框效果Markdown 渲染markdown支持 GitHub 风格 Markdown标题、列表、表格、引用、围栏代码、删除线、任务列表裸 URL 自动链接。markdown source{readme} onLinkClick{(e) open(e.value)} /代码高亮code每行固定行高块高度在语法高亮运行前就已确定支持行号和语言头部条。内置 Rust、TypeScript、JavaScript、Python、Go、JSON 等 15 种语言。code code{source} languagetypescript showLineNumbers /差异查看diff接收标准git diff补丁默认随父容器流动父列表可以成为唯一滚动容器开启wordDiff只高亮真正变化的词。maxLines可截断长补丁并触发onShowMore。diff patch{unifiedPatch} wordDiff maxLines{open ? undefined : 24} onShowMore{() setOpen(true)} onToggleFile{(e) toggle(e.value)} /三者都接受可选的theme属性逐层覆盖内置暗色主题行高、gutter 宽度、标题字号等布局数字放在theme.metrics里调样式只需一次 React 重渲染无需重编译原生模块。原生文本输入input与textarea两者都走 GPUI 的平台级输入处理器自带原生光标、文字选择、IME 组合输入、剪贴板、撤销重做和字形安全删除。textarea value{draft} placeholderAsk anything minRows{1} maxRows{8} onChange{(event) setDraft(event.value ?? )} onSubmit{send} /Enter触发onSubmittextarea中ShiftEnter换行编辑器先在原生侧更新再把完整值报告给 React光标编辑时常亮、空闲后每 500ms 闪烁失焦停止重绘光标颜色可通过input theme{{ caret: #22c55e }} /覆盖input需要autoFocus或点击才能获得焦点否则收不到按键事件。长列表性能利器virtual-list普通滚动容器会构建每一个子元素virtual-list则只构建、布局、绘制视口附近的行是聊天消息流这类长列表的正确选择。virtual-list alignmentbottom followTail estimatedItemHeight{180} style{{ flexGrow: 1, minHeight: 0 }} {messages.map((message) ( Message key{message.id} message{message} / ))} /virtual-list常用属性速览属性默认作用alignmenttop聊天式底部定位用bottomfollowTailfalse贴底时自动跟随新增行overdraw512视口外多构建的像素estimatedItemHeight无未测量行的初始高度估算⚠️ 注意GPUIX 不支持嵌套滚动。一个父级可以滚动内部不能再放virtual-list或overflow: scroll。图片与图标img与svg两者都接收文件系统路径而非 URL。img加载 PNG、JPEG、WebP、GIF、SVG全彩色objectFit与 CSS 一致contain默认 /cover/fill/scaleDown/none加载失败显示占位图而不是崩溃。svg走 GPUI 的单色图标渲染器用style.color着色专为工具栏图标设计。style.color是必须的不设则不绘制。svg src{iconPath} style{{ width: 16, height: 16, color: #b4b4b4 }} /chat 示例的全部侧边栏和输入框图标就是这么实现的图标素材见 examples/assets/icons/。浮层定位anchoredanchored让元素相对一个锚点定位配合deferred可渲染在稍后的绘制通道上——菜单、Tooltip、Select 下拉必须用它才能盖住virtual-list和页面其余部分。anchored sidetop alignend gap{6} deferred div style{{ backgroundColor: #232323, padding: 8 }} text style{{ color: #ffffff }}菜单项/text /div /anchored常用属性sidetop/right/bottom/left、alignstart/center/end、anchor八向锚点、offset、fit: snap自动收进窗口内。跨元素文本选择零配置GPUIX 绘制的每一处文本——包括code、diff、markdown内部——都可以选中和复制。从标题拖到围栏代码块中间内容全部选中CmdC按文档顺序合并复制。想退出选择工具栏、按钮、行号槽只需userSelect: none它像 CSS 一样向下继承。上手示例与运行方式项目内置四个示例全部使用硬编码数据位于 examples/ 目录示例运行命令展示内容chatcd examples bun --hot chat.tsx完整聊天应用虚拟列表 markdown 动画侧边栏native-textcd examples bun --hot native-text.tsxmarkdown/code/diff三件套切换countercd examples bun --hot counter.tsx最小应用状态、事件、hoverdiffcd examples bun --hot diff.tsx用divtext手搓的 diff 对照最小入口只需三步import { render } from gpuix/react function App() { return div style{{ padding: 16 }}text style{{ color: #fff }}hello/text/div } render(App /, { title: My App, width: 800, height: 600 })依赖 Rust 工具链和 Node.js 18macOS 需 Xcode Metal Toolchain。完整构建步骤见 README.md 的 Building 章节架构细节可参考 AGENTS.md。小结11 个 GPUIX 原生元素覆盖了桌面应用的全部核心场景布局divflexbox 原生 hover/active文本text/markdown/code/diff全可选中输入input/textarea原生编辑器性能virtual-list只渲染可视行视觉img/svg图片图标浮层anchored后置绘制通道配合bun --hot热重载和 GPU 测试渲染器截图一套 React 心智模型即可构建流畅的原生桌面应用 【免费下载链接】gpuixNode.js React bindings for Zed GPUI.项目地址: https://gitcode.com/gh_mirrors/gp/gpuix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Linux网络---网络层和IP

Linux网络---网络层和IP

1、IP协议基本概念 主机:配有 IP 地址,也要进⾏路由控制的设备;路由器:即配有 IP 地址,⼜能进⾏路由控制;节点:主机和路由器的统称;2、IP协议头格式4 位版本号 (version): 指定 IP 协…

2026/10/27 3:27:34 阅读更多 →
快速认识Il2CppHookScripts:一条命令解析Unity IL2CPP游戏的Frida脚本,新手完整入门指南

快速认识Il2CppHookScripts:一条命令解析Unity IL2CPP游戏的Frida脚本,新手完整入门指南

快速认识Il2CppHookScripts:一条命令解析Unity IL2CPP游戏的Frida脚本,新手完整入门指南 【免费下载链接】Il2CppHookScripts Frida-based libil2cpp.so runtime parsing script 项目地址: https://gitcode.com/gh_mirrors/il/Il2CppHookScripts …

2026/10/29 8:11:53 阅读更多 →
科研“探针”如何选?云克隆OTUB1抗体,全场景验证助力精准研究

科研“探针”如何选?云克隆OTUB1抗体,全场景验证助力精准研究

科研“探针”如何选?云克隆OTUB1抗体,全场景验证助力精准研究做WB跑出“斑马线”,做IHC染出“大花脸”,做IF看到“满天星”……这些实验翻车的瞬间,相信不少科研人都经历过。样品制备没问题,操作流程倒背如…

2026/10/30 7:00:27 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻