Sauron is an html web framework for building web-apps. It is heavily inspired by elm.
Sauron is an web framework for creating fast and interactive client side web application, as well as server-side rendering for back-end web applications.
use log::trace; use sauron::html::attributes::attr; use sauron::html::text; use sauron::prelude::*; use sauron::{Cmd, Component, Node, Program};#[derive(Debug)] pub enum Msg { Click, }
pub struct App { click_count: u32, }
impl App { pub fn new() -> Self { App { click_count: 0 } } }
impl Component for App { fn view(&self) -> Node { node! {
} } "Minimal example"
{text(format!("Clicked: {}", self.click_count))}fn update(&mut self, msg: Msg) -> Cmd<self msg> { trace!("App is updating with msg: {:?}", msg); match msg { Msg::Click => self.click_count += 1, } Cmd::none() }
}
#[wasm_bindgen(start)] pub fn main() { console_log::init_with_level(log::Level::Trace).unwrap(); console_error_panic_hook::set_once(); Program::mount_to_body(App::new()); }
index.html
htmlIn Cargo.toml, specify the crate-type to be<meta content="text/html;charset=utf-8" http-equiv="Content-Type"> <title>Minimal sauron app</title> <script type="module"> import init from './pkg/minimal.js'; init().catch(console.error); </script>
cdylib
```toml
[package] name = "minimal" version = "0.1.0" edition = "2018"
[lib] crate-type = ["cdylib"]
[dependencies] sauron = "0.34" consoleerrorpanichook = "0.1" log = "0.4" consolelog = "0.2" ```
Build using
sh $> wasm-pack build --target web --releaseLook at the examples and the build script for the details.
html2sauron - A tool to easily convert html into sauron node tree for your views.
cargo install wasm-pack cargo install basic-http-server
Sauron is one of the fastest.
License: MIT