No description
Find a file
Jonathan Kelley 73047fe956 feat: props memoization is more powerful
This commit solves the memoization , properly memoizing properties that don't have any generic parameters. This is a rough heuristic to prevent non-static lifetimes from creeping into props and breaking our minual lifetime management.

Props that have a generic parameter are opted-out of the `partialeq` requirement and props *without* lifetimes must implement partialeq. We're going to leave manual disabling of memoization for future work.
2021-06-22 17:20:54 -04:00
.vscode wip: rethinking stack machine 2021-06-19 20:31:25 -04:00
docs Chore: some cleanup and documentation 2021-06-10 01:01:53 -04:00
examples wip: rethinking stack machine 2021-06-19 20:31:25 -04:00
notes feat: props memoization is more powerful 2021-06-22 17:20:54 -04:00
packages feat: props memoization is more powerful 2021-06-22 17:20:54 -04:00
src docs: move around examples 2021-06-17 18:00:32 -04:00
.gitignore chore: tweak gitignore to hide unnecessary vscode files 2021-06-16 11:27:10 -04:00
Cargo.toml feat: props memoization is more powerful 2021-06-22 17:20:54 -04:00
LICENSE Feat: wire up a very basic dom updater 2021-02-14 23:39:46 -05:00
README.md docs: move around examples 2021-06-17 18:00:32 -04:00

🌗🚀 Dioxus

Frontend that scales.

Dioxus is a portable, performant, and ergonomic framework for building cross-platform user experiences in Rust.

fn Example(cx: Context<()>) -> VNode {
    let (selection, set_selection) = use_state(&cx, || "..?");

    cx.render(rsx! {
        h1 { "Hello, {selection}" }
        button { "?", onclick: move |_| set_selection("world!")}
        button { "?", onclick: move |_| set_selection("Dioxus 🎉")}
    })
};

Dioxus can be used to deliver webapps, desktop apps, static pages, liveview apps, eventually mobile apps (WIP), and more. At its core, Dioxus is entirely renderer agnostic and has great documentation for creating new renderers for any platform.

If you know React, then you already know Dioxus.

Things you'll love ❤️:

  • Ergonomic design
  • Minimal boilerplate
  • Familiar design and semantics
  • Simple build, test, and deploy
  • Compile-time correct templating
  • Support for html! and rsx! templating
  • SSR, WASM, desktop, and mobile support
  • Powerful and simple integrated state management
  • Rust! (enums, static types, modules, efficiency)

Get Started with...

Web Desktop Mobile State Docs Tools

Explore

Blog Posts

  • Why we need a stronger typed web
  • Isomorphic webapps in 10 minutes
  • Rust is high level too
  • Eliminating crashes with Rust webapps
  • Tailwind for Dioxus
  • The monoglot startup

Why?


TypeScript is a great addition to JavaScript, but comes with a lot of tweaking flags, a slight performance hit, and an uneven ecosystem where some of the most important packages are not properly typed. TypeScript provides a lot of great benefits to JS projects, but comes with its own "tax" that can slow down dev teams. Rust can be seen as a step up from TypeScript, supporting:

  • static types for all libraries
  • advanced pattern matching
  • immutability by default
  • clean, composable iterators
  • a good module system
  • integrated documentation
  • inline built-in unit/integration testing
  • best-in-class error handling
  • simple and fast build system
  • powerful standard library (no need for lodash or underscore)
  • include_str! for integrating html/css/svg templates directly
  • various macros (html!, rsx!) for fast template iteration

And much more. Dioxus makes Rust apps just as fast to write as React apps, but affords more robustness, giving your frontend team greater confidence in making big changes in shorter time. Dioxus also works on the server, on the web, on mobile, on desktop - and it runs completely natively so performance is never an issue.