返回资讯中心
外部精选
软件工程
#开发者实时流

Uniform 发布跨平台 UI 工具,用 C 核心实现小于 280KB 的 Web 应用

来源标题:Show HN: JavaScript web apps with WASM layout and GPU rendering in 280 KB

Uniform 提供了一套跨平台响应式 UI 构建工具,完整替代原生 UI 工具后,Web 应用压缩后仍小于 280KB。它通过 JavaScript API 直接调用 C 核心(Web 端编译为 WASM,其他平台为原生代码),并提供同样易用的 C API,支持静态链接或从源码编译。

Hacker News 最新rkaehn2026/11/3 · 4 天前30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Uniform 提供了构建响应式、美观用户界面的工具。尽管它完整实现了对原生 UI 工具的替代,包括文本、布局和渲染,但一个使用 Uniform 的完整 Web 应用压缩后不到 280 KB。

Uniform 没有固定的视觉风格。相反,它尽可能方便地表达任何视觉风格。它的目标是让设计师能够精确实现自己的想法:像素级完美的布局、流畅的动画,以及在必要时灵活定制工具的能力。通过采用底层控制,它在所有支持的平台上表现一致。

Uniform 易于使用,并针对不同需求提供了不同的 API。

JavaScript API 经过优化,可实现尽可能快的迭代速度。无需构建步骤,更改即可立即生效。它直接调用库的 C 核心,该核心在 Web 上编译为 WASM,在其他所有平台上编译为原生代码。

还有一个简单、干净的 C API。它提供更高的性能,但使用起来和 JavaScript API 一样方便。该库可以静态链接,也可以与应用程序的其他部分一起从源码编译。从源码编译(包括着色器)耗时不到 1 秒。

Uniform 目前处于 Preview 阶段,这意味着 API 可能会发生变化,且并非所有功能都已完成。它支持 iOS 和 macOS(通过 Metal 渲染),以及 Web(通过 WebGPU 渲染)。对 Windows、Linux 和 Android 的原生支持(将通过 Vulkan 渲染)已在计划中。

强大的布局。Uniform 将基于约束的布局的最佳部分与使用堆栈的自动布局系统相结合。约束在父节点和子节点之间定义,工作原理是将子节点的一个锚点固定到父节点的一个锚点上,外加一个可选的偏移量。

堆栈支持项目间距、堆栈内容周围的内边距、对齐和分布。每个项目可以定义其作为堆栈一部分时的行为:填充可用空间、紧贴内容,或使用固定尺寸。

布局以定点运算执行,边缘对齐到像素边界,并确保间距一致。对于文本,Uniform 支持文本布局,用户可访问字符级信息,从而实现自定义文本选择和视觉效果。

支持自定义字体,并可为字符串中的特定范围设置字体、大小、粗细和颜色。

为自定义设计而生。大多数应用需要对视觉设计和行为进行精确控制。提供预构建组件并开放部分定制点无法满足这一需求。像按钮这样的简单组件是从零开始定义的。自定义视觉效果、手势和行为只需几行代码。对于滚动列表或文本字段等更复杂的组件,该库提供了事件处理、手势、物理和动画等核心功能。用户只需读取计算出的结果——应该在什么位置绘制什么内容——然后创建具有所需外观的视觉元素。

形状与效果。Uniform 以 SDF 形状为核心概念。SDF 是 Signed Distance Field(有符号距离场)的缩写。这意味着每个像素都包含其到最近边缘的距离信息,以及对应的法线。这些信息可用于实现高级视觉效果。Glass 利用它在边缘附近添加折射效果、在形状上变化模糊半径,并渲染逼真的阴影。它还允许形状相互融合。

连续曲线。该库渲染完全平滑的曲线:连续的位置、连续的斜率、连续的曲率和连续的曲率斜率。这些曲线默认用于圆角矩形,可平滑过渡到胶囊形和圆形。它们也可用于任意折线或多边形。

低延迟输入处理。有一个与平台无关的触摸、手写笔、键盘和鼠标输入接口。为了实现完全控制,可以在每个界面元素上接收原始事件,并针对节点层级进行命中测试。对于触摸输入,有一个强大的手势系统。手势使组件之间能够协商以确定执行什么操作。点击、长按、平移或捏合等常见手势随库提供。这些内置手势使用公开 API 实现,因此自定义手势具有完全相同级别的控制力,并可无缝互操作。

高级显示技术。Uniform 通过简单接口支持扩展动态范围渲染。纯色、渐变、图像等只需使用大于 1.0 的值,就能在支持的显示器上渲染得更亮。合成器可以以高位深度渲染,或在标准位深度目标上应用抖动以改善颜色过渡。还支持高刷新率。

简单的 API。界面元素通过一次函数调用创建。结果是一个不可变节点。节点可以组织成层级结构。布局和渲染在此类层级结构上操作,行为如同纯函数。创建和布局节点是廉价操作,可以根据需要频繁执行。虽然大多数布局可以用内置的约束和堆栈工具实现,但 Uniform 设计为支持任何布局。对单个节点和层级结构执行布局的能力(可能是重复执行或具有复杂依赖关系)使这成为可能。

原生集成。Uniform 不与平台提供的 UI 框架竞争。它不包含原生控件的副本。相反,它提供工具来构建最终应超越原生或浏览器质量的控件。由于该库直接随应用分发,改进可以立即交付给所有用户。在平台边界上,Uniform 力求完美集成。窗口调整大小时无伪影,与原生 UI 相比渲染没有额外延迟。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →