17个不稳定版本 (3个破坏性更新)
0.4.0 | 2023年7月27日 |
---|---|
0.3.0 | 2022年10月21日 |
0.2.2 | 2021年12月14日 |
0.1.10 | 2020年8月13日 |
0.1.8 | 2020年7月31日 |
在#hobo中排名第5
每月下载量83次
在 2 crates中使用
7KB
69 行
hobo
hobo是一个有意见、功能齐全的Rust前端框架。在稳定版Rust上运行。
仍在开发中,尽管已经被GR Digital投入生产使用。
查看书籍!
显著特性
- 无虚拟DOM - HTML元素只是添加到实体中的组件,可以直接通过
web_sys::HtmlElement
访问 - 无模型-视图-更新(即Elm架构) - 状态管理是手动的,通常通过实体-组件关系进行
- 无HTML宏 - 只使用Rust函数
- 内置基于宏的样式,类似于CSS-in-JS,但只是Rust
- 通过futures-signals提供反应性支持
- 基于实体-组件的方法,允许元素之间灵活的状态传播和凝聚力,无需耦合或全局存储或状态
预览
pub use hobo::{
prelude::*,
create as e,
signals::signal::{Mutable, SignalExt}
};
fn counter() -> impl hobo::AsElement {
let counter = Mutable::new(0);
e::div()
.class((
css::display!(flex),
css::flex_direction!(column),
css::width!(400 px),
))
.child(e::div()
.text_signal(counter.signal().map(|value| {
format!("Counter value is: {value}")
}))
)
.child(e::button()
.text("increment")
.on_click(move |_| *counter.lock_mut() += 1)
)
}
依赖项
~3MB
~57K SLoC