Warning
stunt is currently undergoing a large change in api and is NOT ready for production use at the moment.
- Isomorphic: Write server logic alongside client-side components, and call server logic from the client with services. Services can also integrate with foreign APIs.
- Html Macro: Macro for writing html with rust expressions, similar to that of JSX.
- Type checked: Compile-time type checking of components to prevent runtime bugs.
This crate is on crates.io and can be added either through
adding stunt to your dependencies in Cargo.toml:
[dependencies]
stunt = "0.1.3"Or running the following Cargo command in your project directory:
cargo add stuntMore examples can be found at examples.
use stunt::prelude::*;
pub enum Message {
Add,
}
pub struct App {
count: usize,
}
impl Component for App {
type Message = Message;
type Properties = ();
fn create() -> App {
App {
count: 0,
}
}
fn callback(&mut self, message: &Message) {
match message {
Message::Add => {
self.count += 1;
},
}
}
fn view(&self, _: ()) -> Html {
html! {
<div>
<button onclick={ Message::Add } >
{ "increment" }
</button>
<h1>
{ self.count }
</h1>
</div>
}
}
}
fn main() {
Renderer::new::<App>().render();
}We highly appreciate all contributions whether its a bug fix, feature, or documentation. If you encounter any bugs or otherwise weird behaviour we would really appreciate if you submitted an issue for us to look into.
stunt is licensed under the MIT license.