#gui-framework #gtk #框架 #wasm #virtual-dom

gxi

Rust 中基于零成本跨平台原生小部件的组件系统

12 个版本 (4 个重大更改)

0.6.1 2021年12月29日
0.6.0 2021年12月23日
0.4.0 2021年10月26日
0.3.0-alpha.22021年6月29日
0.1.3 2021年4月29日

#660GUI

MIT 许可证

180KB
927

DXI

Tests

Rust 中基于跨平台原生小部件的组件系统

使用 过程宏,gxi 转译器将组件树转换为使用可观察的同步/异步状态模式的自管理 n-二叉树,以实现最高效率和最低开销,几乎无运行时成本。本质上,消除了使用 虚拟 DOM差异算法。该组件系统与平台无关,允许系统生成平台相关和独立的组件,将它们合并以实现代码重用和维护性。

平台

  • Web wasm32-unknown-unknown
  • 桌面(GTK)Windows、Mac 和 Linux
  • 平台独立(Web 和 GTK)
  • Android
  • iOS

示例

use gxi::{gxi, set_state, State, StrongNodeType, Text};

pub fn cat_fact() -> StrongNodeType {
    let cat_fact = State::new(String::new());

    let fetch_cat_fact = set_state!(
        async || {
            let resp = reqwest::get("https://catfact.ninja/fact?max_length=140")
                .await
                .unwrap();
            *(*cat_fact).borrow_mut() = resp.text().await.unwrap();
        },
        [cat_fact]
    );

    // pre fetch cat memes
    fetch_cat_fact();

    return gxi! {
        div [
            button ( on_click = move |_| fetch_cat_fact() ) [
                Text ( value = "fetch cat memes!" )
            ],
            p [
                Text ( value = &cat_fact[..])
            ],
        ]
    };
}

完整源代码 在此

行为准则

行为准则可在 CODE_OF_CONDUCT.md 中找到

贡献

在贡献之前,请务必阅读 贡献指南

版权(C)2021 Aniket Prajapati

MIT 许可证 下许可

贡献者

依赖项

~1.2–3.5MB
~74K SLoC