One crate to rule the DOM
One crate to mind it
One crate to bring JSON
And in the Rust code bind it
This code, no other, is made by code elves
Who'd pawn parent process to get it themselves
Ruler of net troll and mortal and hacker
This code is a lib crate for Patreon backers
If trashed or buggy it cannot be remade
If found send to Ivan, the bandwidth is prepaid
-- The Harvard Lampoon & po8
Sauron is an html web framework for building web-apps with the goal of closely adhering to The Elm Architecture, a paragon for elegant design.
As with elm, sauron follows the simplistic design of writing view code.
```rust use sauron::html::attributes::; use sauron::html::events::; use sauron::; use sauron::Component; use sauron::Node; use sauron::Program; use sauron::Cmd; use wasm_bindgen::prelude::; use log::*;
pub enum Msg { Click, }
pub struct App { click_count: u32, }
impl App { pub fn new() -> Self { App { click_count: 0 } } }
impl Component
fn view(&self) -> Node<Msg> {
div!(
[class("some-class"), id("some-id"), attr("data-id", 1)],
[
input!(
[
class("client"),
type_("button"),
value("Click me!"),
onclick(|_| {
trace!("Button is clicked");
Msg::Click
}),
],
[],
),
text!("Clicked: {}", self.click_count),
],
)
}
fn update(&mut self, msg: Msg) -> Cmd<Self, Msg> {
trace!("App is updating from msg: {:?}", msg);
match msg {
Msg::Click => {
self.click_count += 1;
Cmd::none()
}
}
}
}
pub fn main() {
Program::mounttobody(App::new());
}
index.html
html
In Cargo.toml, specify the crate-type to be `cdylib`
toml
[lib]
crate-type = ["cdylib"]
```
Note: You need to use the nightly compiler with minimum version: rustc 1.37.0-nightly (17e62f77f 2019-07-01)
Build using
sh
$> wasm-pack build --target no-modules
Look at the examples
and the build script for the details.
html2sauron - A tool to easily convert html into sauron node tree for your views.
sh
cargo install wasm-pack
cargo install basic-http-server
Warning: I repeat, You need to use the latest nightly compiler in order for this to work.
This project is based on the existing projects: - percy - yew - willow
License: MIT