2 releases
0.2.1 | Dec 14, 2021 |
---|---|
0.2.0 | Dec 13, 2021 |
#3 in #hobo
270KB
5K
SLoC
hobo
hobo is an opinionated, batteries-included Rust frontend framework. Works on stable Rust.
STILL WIP although used in production by GR Digital
Check out the Book!
Notable features:
- no virtual DOM - html elements are just components added to entities and can be accessed directly via
web_sys::HtmlElement
- no Model-View-Update (aka Elm architecture) - state management is manual, usually via Entity-Component relations
- no HTML macros - just Rust functions
- built-in macro-based styling, kind of like CSS-in-JS except it's just Rust
- reactivity support via rust-signals
- Entity-Component based approach allowing flexible state propagation and cohesion between elements without coupling or a need for global store or state
Sneak peek:
fn counter() -> impl hobo::Element {
let counter = Mutable::new(0);
cmp::div()
.class((
css::display!(flex),
css::width!(400 px),
))
.child(cmp::div()
.text_signal(counter.signal().map(|value| format!("Counter value is: {}", value)))
)
.child(cmp::button()
.text("increment")
.on_click(move |_| *counter.lock_mut() += 1)
)
}
Dependencies
~16MB
~303K SLoC