12 个版本 (4 个重大更改)
0.6.1 | 2021年12月29日 |
---|---|
0.6.0 | 2021年12月23日 |
0.4.0 | 2021年10月26日 |
0.3.0-alpha.2 | 2021年6月29日 |
0.1.3 | 2021年4月29日 |
#660 在 GUI
180KB
927 行
DXI
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