| Crates.io | valerie |
| lib.rs | valerie |
| version | 0.1.2 |
| created_at | 2020-07-08 00:32:40.175874+00 |
| updated_at | 2020-07-22 15:28:19.191285+00 |
| description | Rust font-end framework for building web apps. |
| homepage | https://github.com/emmanuelantony2000/valerie |
| repository | https://github.com/emmanuelantony2000/valerie |
| max_upload_size | |
| id | 262437 |
| size | 220,657 |
Rust front-end framework for building web apps.
Valerie is still in a very early phase. A lot of features are not available at the moment. A lot of work is left and you are welcome to try it out.
Component trait.Node.StateAtomic for types implementing Copy.StateMutex for types implementing Clone.cargo new --lib some_namevalerie to the dependenciesstatic directory and create an index.html inside it<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
<script type="module">
import init from "./wasm.js"
init()
</script>
</head>
<body></body>
</html>
Cargo.toml enable lto.[profile.release]
lto = true
opt-level = 3
wasm-pack by running
wasm-pack build --target web --out-name wasm --out-dir ./staticminiserve,
to host the ./static folder and try it out.Take a look at wasm-pack docs for more options.
use valerie::prelude::components::*;
use valerie::prelude::*;
fn ui() -> Node {
h1!("Hello World").into()
}
#[valerie(start)]
pub fn run() {
App::render_single(ui());
}
use valerie::prelude::components::*;
use valerie::prelude::*;
fn ui() -> Node {
let value = StateAtomic::new(0isize);
div!(
h1!("Value ", value.clone()),
button!("Add 1")
.on_event("click", value.clone(), move |x, _| {
*x += 1;
}),
button!("Subtract 1")
.on_event("click", value.clone(), move |x, _| {
*x -= 1;
})
)
.into()
}
#[valerie(start)]
pub fn run() {
App::render_single(ui());
}
use valerie::prelude::components::*;
use valerie::prelude::*;
use wasm_timer::Delay;
fn ui() -> web_sys::Node {
let timer = StateAtomic::new(0);
execute(time(1, timer.clone()));
p!("Seconds passed: ", timer).into()
}
async fn time(n: u64, mut timer: StateAtomic<usize>) {
while Delay::new(core::time::Duration::from_secs(n))
.await
.is_ok() {
timer += 1;
}
}
#[valerie(start)]
pub fn run() {
App::render_single(ui());
}
There are more examples in the examples directory.
Pick out some issues and start contributing. Our contribution guidelines are available here.