| Crates.io | vertigo |
| lib.rs | vertigo |
| version | 0.8.2 |
| created_at | 2020-12-23 12:47:14.624989+00 |
| updated_at | 2025-09-10 17:42:29.936865+00 |
| description | Reactive Real-DOM library with SSR for Rust |
| homepage | https://github.com/vertigo-web/ |
| repository | https://github.com/vertigo-web/vertigo |
| max_upload_size | |
| id | 326495 |
| size | 640,861 |
A reactive Real-DOM library with SSR for Rust
vertigo-cliSee Changelog for recent features.
Go to TUTORIAL if you want to try.
For more information go to vertigo home website vertigo.znoj.pl.
Dependencies:
vertigo = "0.8"
Example 1:
use vertigo::{dom, DomNode, Value, bind, main};
#[main]
pub fn app() -> DomNode {
let count = Value::new(0);
let increment = bind!(count, |_| {
count.change(|value| {
*value += 1;
});
});
let decrement = bind!(count, |_| {
count.change(|value| {
*value -= 1;
});
});
dom! {
<html>
<head/>
<body>
<div>
<p>"Counter: " { count }</p>
<button on_click={decrement}>"-"</button>
<button on_click={increment}>"+"</button>
</div>
</body>
</html>
}
}
Example 2:
use vertigo::{css, component, DomNode, Value, dom, main};
#[component]
pub fn MyMessage(message: Value<String>) {
dom! {
<p>
"Message to the world: "
{ message }
</p>
}
}
#[main]
fn app() -> DomNode {
let message = Value::new("Hello world!".to_string());
let main_div = css!("
color: darkblue;
");
dom! {
<html>
<head/>
<body>
<div css={main_div}>
<MyMessage message={message} />
</div>
</body>
</html>
}
}
Take a look at More examples here.
vertigo-cli toolTo ease process or development use vertigo-cli tool that allows to build, serve and watch your project.
cargo install --force vertigo-cli
Make sure you're using nightly version of rust:
rustup default nightlyInstall cargo-make and vertigo-cli:
cargo install cargo-make vertigo-cliBuild and run project using:
cargo make demoEventually terminal will let you know that app is available under http://localhost:4444/
If you want to play around with the demo code, run:
cargo make demo-watchIt should automatically recompile upon changes and the browser tab should be informed to refresh. Note that this compiles the code in debug mode so the WASM is not optimized.
To run the examples in watch mode (they will run on localhost:4444):
cargo make examples-counter or cargo make examples-router or cargo make examples-trafficlights