#tui #terminal #component #events #framework #user-interface #terminal-interface

tuirealm

A tui-rs 框架,用于构建 tui 接口,灵感来自 React 和 Elm

28 个版本 (17 个稳定版)

1.9.2 2024年3月4日
1.9.1 2023年10月16日
1.9.0 2023年8月22日
1.8.0 2022年8月14日
0.5.1 2021年7月31日

#26 in 命令行工具

Download history 353/week @ 2024-03-13 371/week @ 2024-03-20 350/week @ 2024-03-27 370/week @ 2024-04-03 375/week @ 2024-04-10 325/week @ 2024-04-17 265/week @ 2024-04-24 404/week @ 2024-05-01 233/week @ 2024-05-08 258/week @ 2024-05-15 169/week @ 2024-05-22 370/week @ 2024-05-29 260/week @ 2024-06-05 343/week @ 2024-06-12 230/week @ 2024-06-19 143/week @ 2024-06-26

每月 1,001 次下载
用于 16 crate(14 个直接使用)

MIT 许可证

265KB
6K SLoC

tui-realm

~ 受 Elm 和 React 启发的 ratatui 框架 ~

入门 · 标准库 · 文档

@veeso 开发

当前版本:1.9.2 (04/03/2024)

License-MIT Repo stars Downloads counter Latest version Ko-fi

Ratatui-Crossterm CI Ratatui-Termion CI Tui-Crossterm CI Termion CI Crossterm CI (Windows) Coveralls Docs



关于 tuirealm 👑

tui-realm 是一个用于 tuiratatui框架,它简化了终端用户界面的实现,通过添加使用属性和状态的可重用组件的可能性,就像你在 React 中做的那样。但不仅如此:组件通过基于 消息事件 的系统与 UI 引擎通信,为你提供了实现 update 程序的可能性,就像 Elm 中发生的那样。此外,组件组织在 视图 中,视图为您管理挂载/卸载、焦点和事件转发。

这也解释了名称的由来:Realm 代表 React 和 Elm。

tui-realm 还附带了一个组件库,可以添加到您的依赖项中,您可能会发现它们非常有用。别担心,如果您不想使用它们,它们是可选的 😊,只需按照 入门指南 操作即可。

Demo

示例 中查看 tui-realm 的实际应用,或者如果您想了解更多关于 tui-realm 的信息,请阅读官方指南 这里

功能 🎁

  • ⌨️ 事件驱动
  • ⚛️ 基于 ReactElm
  • 🍲 模板 代码
  • 🚀 快速设置
  • 🎯 单一 关注点状态 管理
  • 🙂 易于学习
  • 🤖 适用于任何用例

入门 🏁

⚠️ 注意:目前 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 宏添加到自动实现 MockComponentComponent了解更多
  • serialize:为 KeyEventKey 添加序列化/反序列化特质实现。
  • tui:使用 tui-rs 终端 UI 库
  • ratatui:使用 ratatui 终端 UI 库
  • crossterm:使用 crossterm 终端后端
  • termion:使用 termion 终端后端

已弃用的功能标志

  • with-crossterm
  • with-termion

⚠️ 您一次只能启用一个后端,并且至少必须启用一个才能进行构建。
❗ 您不需要将 tui 作为依赖项,因为您可以通过 use tuirealm::tui:: 访问 tui 类型

启用其他后端 ⚠️

此库支持两个后端:crosstermtermion,以及两个高级终端 TUI 库:tuiratatui。每次您明确声明任何 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 项目有用 💜。

想要添加自己的?使用 New app/component 模板创建一个 issue 😄


指南 🎓


文档 📚

开发者文档可在 Rust Docs 上找到:https://docs.rs/tuirealm


使用 tuirealm 的应用程序 🚀

想要添加自己的?使用 New app/component 模板创建一个 issue 😄


支持开发者 ☕

如果你喜欢 tui-realm 并且感谢我的工作,请考虑小额捐赠 🥳

你可以通过以下平台之一进行捐赠

ko-fi PayPal


贡献和问题 🤝🏻

欢迎贡献、错误报告、新功能和提问!😉 如果你有任何问题或担忧,或者你想建议一个新功能,或者你只是想改进 tui-realm,请随意打开一个 issue 或 PR。

请遵循 我们的贡献指南


变更日志 ⏳

查看 tui-realm 的变更日志 在这里


许可证 📃

tui-realm 采用 MIT 许可证。

你可以在这里阅读完整的许可证:这里

依赖关系

~8–21MB
~230K SLoC