3个版本 (重大更改)

0.4.0 2023年7月9日
0.3.0 2020年12月31日
0.2.0 2020年10月14日

WebAssembly中排名第415

每月下载32
用于paddle

MIT/Apache

35KB
689

Div

Rust的Ad hoc HTML。

这个crate旨在提供一个Rust API,以便轻松创建HTML div元素,并通过像素坐标管理它们的位置。这可以与帧帧渲染的画布结合使用。div的内容应由不同的库处理。

该crate的代码库相对较小,并建立在web-sys之上。其功能可以概括为

  • 将div作为现有DOM节点的子节点创建
  • 使用实现DivHandleCopy轻松管理div
  • 使用绝对坐标(重新)定位div
  • 显示和隐藏div
  • 通过调整所有创建的div来处理显示的调整大小(例如,桌面上的窗口调整大小或手机方向改变)

预期用途案例

  • 将HTML放置在渲染游戏或其他图形密集型应用程序的canvas元素上
  • 在Rust中动态加载和管理外部定义的组件,并将其附加到DOM中。 (组件可以用JS或Rust前端库定义,但此功能尚未完善。)
  • 作为高级crate的低级构建块(参见游戏引擎paddle

Div不是什么

  • 一个GUI库:Div没有GUI组件,但可以使用Div构建GUI组件。
  • 一个虚拟DOM实现:Div只管理一组单个DOM节点,没有跟踪它们之间的关系,也不了解节点内部的内容。

示例

此crate中的示例在线托管: div-rs 示例

请查看示例目录中的代码。最好的方法是克隆仓库并本地运行它,这样您就可以与代码互动。

为了让示例在您的机器上运行,您需要npm、webpack和wasm-pack。

git clone https://github.com/jakmeier/div-rs.git
cd div-rs/examples/www;
npm run build;
npm run start;

起源和动机

创建Div的动机是利用HTML + CSS,在Rust语言中为浏览器创建游戏。在此之前,我知道的唯一简单实现GUI(在浏览器上运行的Rust)的方式是通过通用的GUI库和WebGL后端进行渲染。这在我看来有点浪费,因为浏览器已经内置了优秀的GUI支持。

我不想在WebGL中渲染字体,也不想在Rust中创建复杂的UI库,我只想使用浏览器原生支持的功能。我认为这有两个主要优点。

  1. 打包的Webassembly二进制文件体积更小
  2. 无需学习新GUI库的API,只需使用HTML + CSS

许可证

MIT / Apache-2.0

依赖项

约6.5-8.5MB
约171K SLoC