3个版本 (重大更改)
0.4.0 | 2023年7月9日 |
---|---|
0.3.0 | 2020年12月31日 |
0.2.0 | 2020年10月14日 |
在WebAssembly中排名第415
每月下载32次
用于paddle
35KB
689 行
Div
Rust的Ad hoc HTML。
这个crate旨在提供一个Rust API,以便轻松创建HTML div元素,并通过像素坐标管理它们的位置。这可以与帧帧渲染的画布结合使用。div的内容应由不同的库处理。
该crate的代码库相对较小,并建立在web-sys之上。其功能可以概括为
- 将div作为现有DOM节点的子节点创建
- 使用实现
DivHandle
的Copy
轻松管理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库,我只想使用浏览器原生支持的功能。我认为这有两个主要优点。
- 打包的Webassembly二进制文件体积更小
- 无需学习新GUI库的API,只需使用HTML + CSS
许可证
依赖项
约6.5-8.5MB
约171K SLoC