28 个版本 (17 个稳定版)
1.9.2 | 2024年3月4日 |
---|---|
1.9.1 | 2023年10月16日 |
1.9.0 |
|
1.8.0 | 2022年8月14日 |
0.5.1 | 2021年7月31日 |
#26 in 命令行工具
每月 1,001 次下载
用于 16 个 crate(14 个直接使用)
265KB
6K SLoC
tui-realm
~ 受 Elm 和 React 启发的 ratatui 框架 ~
由 @veeso 开发
当前版本:1.9.2 (04/03/2024)
关于 tuirealm 👑
tui-realm 是一个用于 tui 和 ratatui 的 框架,它简化了终端用户界面的实现,通过添加使用属性和状态的可重用组件的可能性,就像你在 React 中做的那样。但不仅如此:组件通过基于 消息 和 事件 的系统与 UI 引擎通信,为你提供了实现 update
程序的可能性,就像 Elm 中发生的那样。此外,组件组织在 视图 中,视图为您管理挂载/卸载、焦点和事件转发。
这也解释了名称的由来:Realm 代表 React 和 Elm。
tui-realm 还附带了一个组件库,可以添加到您的依赖项中,您可能会发现它们非常有用。别担心,如果您不想使用它们,它们是可选的 😊,只需按照 入门指南 操作即可。
在 示例 中查看 tui-realm 的实际应用,或者如果您想了解更多关于 tui-realm 的信息,请阅读官方指南 这里。
功能 🎁
- ⌨️ 事件驱动
- ⚛️ 基于 React 和 Elm
- 🍲 模板 代码
- 🚀 快速设置
- 🎯 单一 关注点 和 状态 管理
- 🙂 易于学习
- 🤖 适用于任何用例
入门 🏁
⚠️ 注意:目前 tui-realm 支持以下后端:crossterm、termion
将 tuirealm 添加到 Cargo.toml 🦀
如果您想使用默认功能,只需添加 tuirealm 1.x 版本
tuirealm = "^1.9.0"
否则,您可以指定要添加的功能
tuirealm = { version = "^1.9.0", default-features = false, features = [ "derive", "serialize", "termion" ] }
支持的功能包括
derive
(默认):将#[derive(MockComponent)]
proc 宏添加到自动实现MockComponent
的Component
。 了解更多。serialize
:为KeyEvent
和Key
添加序列化/反序列化特质实现。tui
:使用 tui-rs 终端 UI 库ratatui
:使用 ratatui 终端 UI 库crossterm
:使用 crossterm 终端后端termion
:使用 termion 终端后端
已弃用的功能标志
with-crossterm
with-termion
⚠️ 您一次只能启用一个后端,并且至少必须启用一个才能进行构建。
❗ 您不需要将 tui 作为依赖项,因为您可以通过use tuirealm::tui::
访问 tui 类型
启用其他后端 ⚠️
此库支持两个后端:crossterm
和 termion
,以及两个高级终端 TUI 库:tui
和 ratatui
。每次您明确声明任何 TUI 库或后端功能集时,您应该禁用 crate 的默认功能。
❗ 您一次不能启用超过一个后端和一个 UI 库
使用 termion 后端示例
tuirealm = { version = "^1.9.0", default-features = false, features = [ "termion", "derive", "tui" ] }
使用 ratatui UI 库示例
tuirealm = { version = "^1.9.0", default-features = false, features = [ "ratatui", "derive", "crossterm" ]}
创建 tuirealm 应用程序 🪂
在 相关指南 中查看如何实现 tui-realm 应用程序。
运行示例 🔍
对 tui-realm 的工作方式仍然感到困惑?别担心,尝试使用示例
-
demo:一个简单的应用程序,展示了 tui-realm 的工作方式
cargo run --example demo
标准组件库 🎨
Tui-realm 随附了一个可选的标准组件库,我认为这些组件对大多数应用程序都有用。如果您想使用它,只需将 tui-realm-stdlib 添加到您的 Cargo.toml
依赖项中。
社区组件 🏘️
这些组件不包括在 tui-realm 中,但已由其他用户开发。我喜欢推广他人的内容,所以您可以在这里找到一份组件列表,这些组件可能对您的下一个 tui-realm 项目有用 💜。
- tui-realm-textarea 由 @veeso 开发的一个 textarea/editor 组件
- tui-realm-treeview 由 @veeso 开发的一个 treeview 组件
想要添加自己的?使用 New app/component
模板创建一个 issue 😄
指南 🎓
文档 📚
开发者文档可在 Rust Docs 上找到:https://docs.rs/tuirealm
使用 tuirealm 的应用程序 🚀
想要添加自己的?使用 New app/component
模板创建一个 issue 😄
支持开发者 ☕
如果你喜欢 tui-realm 并且感谢我的工作,请考虑小额捐赠 🥳
你可以通过以下平台之一进行捐赠
贡献和问题 🤝🏻
欢迎贡献、错误报告、新功能和提问!😉 如果你有任何问题或担忧,或者你想建议一个新功能,或者你只是想改进 tui-realm,请随意打开一个 issue 或 PR。
请遵循 我们的贡献指南
变更日志 ⏳
查看 tui-realm 的变更日志 在这里
许可证 📃
tui-realm 采用 MIT 许可证。
你可以在这里阅读完整的许可证:这里
依赖关系
~8–21MB
~230K SLoC