35 个版本 (21 个破坏性)
0.28.1 | 2024 年 7 月 5 日 |
---|---|
0.27.2 | 2024 年 4 月 2 日 |
0.27.1 | 2024 年 3 月 29 日 |
0.24.1 | 2023 年 11 月 30 日 |
0.10.0 | 2021 年 2 月 28 日 |
103 在 GUI
91,372 每月下载量
用于 321 个 Crates (282 直接)
2MB
33K SLoC
eframe:egui
框架
eframe
是使用 egui
编写应用的官方框架库。应用可以编译为原生运行(适用于 Linux、Mac、Windows 和 Android)或作为 Web 应用(使用 Wasm)。
要开始,请查看 示例。要了解如何为网页和原生设置 eframe
,请访问 https://github.com/emilk/eframe_template/ 并按照那里的说明操作!
还有https://www.youtube.com/watch?v=NtUkr_z7l84 上的教程视频。
有关如何使用 egui
的信息,请参阅 egui 文档。
eframe
使用 egui_glow
进行渲染,并在原生上使用 egui-winit
。
要在 Linux 上使用,首先运行
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev
您需要使用 edition = "2021"
,或者在您的顶层 Cargo.toml
的 [workspace]
部分中设置 resolver = "2"
。有关更多信息,请参阅此链接。
您可以选择使用egui_wgpu
进行渲染,通过启用wgpu
功能并将NativeOptions::renderer
设置为Renderer::Wgpu
来启用。
为了在网络上实现复制粘贴功能,您需要编译时使用export RUSTFLAGS=--cfg=web_sys_unstable_apis
。
替代方案
eframe
并不是使用egui
编写应用程序的唯一方式!您还可以尝试egui-miniquad
、bevy_egui
、egui_sdl2_gl
等。
您还可以使用egui_glow
和winit
来构建自己的应用程序,如https://github.com/emilk/egui/blob/master/crates/egui_glow/examples/pure_glow.rs所示。
在网络上运行egui时的限制
eframe
使用WebGL(通过glow
)和Wasm,几乎没有使用其他Web技术栈。这带来了一些好处,但也产生了一些挑战和严重的缺点。
- 渲染:在网络上实现像素级渲染非常困难。
- 搜索:您不能像在普通网页上那样搜索egui网页。
- 在移动设备上显示屏幕键盘:没有JS函数可以做到这一点,所以
eframe
通过添加一些不可见的DOM元素来模拟。它并不总是有效。 - 移动文本编辑不如普通Web应用程序。
- 没有与浏览器颜色和字体设置的集成。
- 无障碍性:存在一个实验性的屏幕阅读器,用于
eframe
,但必须显式启用。没有JS函数可以询问“用户是否想要屏幕阅读器?”(由于用户跟踪/完整性问题,可能不应该有这样的函数)。egui
支持AccessKit,但截至2024年初,AccessKit缺少Web后端。
在许多方面,eframe
试图让浏览器做它不是设计来做的事情(尽管浏览器厂商可以做很多事情来改善像egui这样的库的工作方式)。
建议使用eframe
的场景是性能和响应性比无障碍性和移动文本编辑更重要的Web应用程序。
配套库
并非所有Rust库在编译为Wasm时都能正常工作,但以下是一些设计得很好,既可以本地运行也可以作为Wasm运行的库:
名称
eframe
中的frame既代表您的egui
应用程序所在的框架,也代表“框架”(eframe
是一个框架,egui
是一个库)。
依赖关系
~6–51MB
~810K SLoC