Maintenance

sauron

Latest Version Build Status MIT licensed

sauron

Sauron is a versatile web framework and library for building client-side and/or server-side web applications with strong focus on simplicity. It is suited for developing web application which uses progressive rendering.

Counter example

In your src/lib.rs ```rust use sauron::prelude::*;

[derive(Debug)]

enum Msg { Click, }

struct App { click_count: u32, }

impl App { pub fn new() -> Self { App { click_count: 0 } } }

impl Application for App { fn view(&self) -> Node { node! {

"Minimal example"

{text(format!("Clicked: {}", self.click_count))}
} }

fn update(&mut self, msg: Msg) -> Cmd<Self, Msg> {
    log::trace!("App is updating with msg: {:?}", msg);
    match msg {
        Msg::Click => self.click_count += 1,
    }
    Cmd::none()
}

}

[wasm_bindgen(start)]

pub fn main() { consolelog::initwithlevel(log::Level::Trace).unwrap(); consoleerrorpanichook::setonce(); Program::mountto_body(App::new()); }

```

index.html html <html> <head> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"/> <title>Counter</title> <style type="text/css"> body { font-family: verdana, arial, monospace; } main { width:30px; height: 100px; margin:auto; text-align: center; } input, .count{ font-size: 40px; padding: 30px; } </style> <script type=module> import init from './pkg/counter.js'; await init().catch(console.error); </script> </head> <body> </body> </html> In Cargo.toml, specify the crate-type to be cdylib

```toml [package] name = "counter" version = "0.1.0" edition = "2021"

[lib] crate-type = ["cdylib"]

[dependencies] sauron = "0.53.0" ```

Prerequisite:

sh cargo install wasm-pack cargo install basic-http-server

Build using sh wasm-pack build --target web --release Serve using basic-http-server -a 0.0.0.0:4000 Then navigate to http://localhost:4000

Head over to the getting-started.md for the full tutorial.

For more details on the commands to build and serve, look on examples on this repo, each has scripts on how to build and run them.

Demo examples

License: MIT