这个项目能做什么
Freya 是一个面向 Rust 的跨平台、原生、声明式 GUI 库。它面向使用 Rust 构建桌面应用的开发者,这些开发者希望采用基于组件的 UI 模型,而不依赖 Web 技术。
核心模型:组件是可复用的 UI 元素,当它们所依赖的状态发生变化时会重新渲染。组件可以持有内部状态,也可以订阅共享状态;任何实现了 Component trait 的类型都可以作为组件使用;根应用组件可以是一个普通函数。内置示例包括 Button 和 Switch。
开箱即用的组件范围从 Button、Switch 和 Slider 等简单控件,到 VirtualScrollView、Calendar 和 ColorPicker 等更复杂的组件。examples 文件夹中以 component_ 为前缀的示例文件展示了这些组件。
README 中描述的功能领域:
- 动画:颜色、尺寸和位置的过渡效果,并可控制时序、缓动和序列。
- 富文本编辑:光标管理、选择、键盘快捷键、自定义格式化和虚拟化。
- 代码编辑器:与状态无关的编辑器,使用 Rope 处理文本,使用 tree-sitter 进行语法高亮;你需要提供语法和 highlights 查询。通过 code-editor feature 启用。
- 通过 MarkdownViewer 组件进行 Markdown 渲染(markdown feature)。
- 使用 Routable derive、布局、链接和 router context 进行路由与导航(router feature)。
- 通过 freya-radio 进行全局状态管理,这是一个基于通道的系统,组件订阅通道,并且仅在相关数据发生变化时接收更新(radio feature)。
- 图标库集成,目前支持 Lucide。
- 使用 freya-testing 进行无头测试,它可以模拟交互并将 UI 状态渲染到文件;Freya 自身也使用它来测试内置组件。
- 通过 Plotters 库进行图表和绘图(ploters feature)。
- 使用 Fluent 本地化系统进行国际化,支持翻译、复数和区域设置切换(i18n feature)。
- 受 Material Design 启发的样式修饰符,例如涟漪效果(material-design feature)。
- WebView 集成,用于在原生 UI 旁嵌入 Web 内容(webview feature)。
- 终端模拟,支持 PTY,用于集成终端或 SSH 客户端(terminal-pty feature)。
- 开发者工具,可实时检查组件树(devtools feature)。
用法:最新稳定版本指定为 freya = "0.4",另有 0.5.0-rc.7 预发布版本和 main 分支选项。该仓库使用 git submodules,因此克隆时需要 --recurse-submodules,或者之后运行 git submodule update --init --recursive。示例可以通过 cargo run --example counter 运行。文档中链接了开发环境设置指南。README 指出在 Windows 上使用 windows-gnu 可能存在编译问题。
该项目链接了网站、docs.rs 文档、Discord 服务器、贡献指南和赞助页面,并致谢 Dioxus、rust-skia 和其他贡献者。
评论
0 评分人数达到10人后显示
登录后参与讨论。