sauron 0.4.0

An html library for building client side webapps
Documentation

sauron

Latest Version Build Status MIT licensed

sauron

Sauron is an html web framework for building web-apps. It is heavily inspired by elm.

Sauron doesn't use macro to provide the view, instead it is using rust syntax to construct the html view.

Example

use sauron::html::attributes::*;
use sauron::html::events::*;
use sauron::html::*;
use sauron::Component;
use sauron::Node;
use sauron::Program;
use wasm_bindgen::prelude::*;

#[derive(Debug, Clone)]
pub enum Msg {
    Click,
}

pub struct App {
    click_count: u32,
}

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

impl Component<Msg> for App {

    fn view(&self) -> Node<Msg> {
        div(
            [class("some-class"), id("some-id"), attr("data-id", 1)],
            [
                input(
                    [
                        class("client"),
                        r#type("button"),
                        value("Click me!"),
                        onclick(|_| {
                            sauron::log("Button is clicked");
                            Msg::Click
                        }),
                    ],
                    [],
                ),
                text(format!("Clicked: {}", self.click_count)),
            ],
        )
    }

    fn update(&mut self, msg: Msg) {
        sauron::log!("App is updating from msg: {:?}", msg);
        match msg {
            Msg::Click => self.click_count += 1,
        }
    }

}

#[wasm_bindgen(start)]
pub fn main() {
    Program::new_append_to_mount(App::new(), &sauron::body());
}

Look at the examples code and the build script for the details.

Warning: You need to use the latest nightly compiler in order for this to work.

This project is based on the existing projects:

License: MIT