Hirola

Latest Version Browser Tests Unit Tests MIT licensed

Hirola is an un-opinionated webf ramework that is focused on simplicity and predictability.

Goals

  1. Keep it simple. A simple and declarative way to build web UIs in rust with a small learning curve.
  2. Make it easy to read, extend and share code. Mixins and components are kept simple and macro-free.
  3. No context, you can choose passing props down, and/or use the global-state.
  4. Familiality. Uses rsx which is very similar to jsx.

Example

We are going to create a simple counter program.

cargo new counter

With a new project, we need to create an index file which is the entry point and required by trunk

cd counter

Create an index.html in the root of counter. Add the contents below

html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hirola Counter</title> <body></body> </head> </html>

Lets add some code to src/main.rs

```rust use hirola::prelude::*;

fn counter(app: &HirolaApp) -> Dom { let count = Signal::new(0); let increment = count.mutcallback(|c, _| c + 1) html! {

{count.get()}
} } fn main() { let window = websys::window().unwrap(); let document = window.document().unwrap(); let body = document.body().unwrap();

let app = HirolaApp::new();
app.mount(&body, counter);

} ```

Now lets run our project

trunk serve

You should be able to get counter running: Live Example

Ecosystem

Check out Hirola Docs written with Hirola itself!

Here are some extensions for hirola:

  1. Form
  2. Router
  3. State

Milestones

| Status | Goal | Labels | | :----: | :------------------------------------------------------------------------ | ------- | | ✔ | Write code that is declarative and easy to follow | ready | | ✔ | Allow extensibility via mixins | ready | | 🚀 | Standardize Components | ready | | 🚀 | SSR | ready | | 🚀 | Hydration | todo | | 🚀 | Serverside integrations | todo |

Inspiration

Demo examples

This API will certainly change.

Go to examples and use trunk

$ trunk serve

Prerequisite:

You need need to have rust, cargo and trunk installed.

License: MIT