project_structure.md 4.6 KB

Project Struture

There are many packages in the Dioxus organization. This document will help you understand the purpose of each package and how they fit together.

Renderers

  • Desktop: A renderer that runs Dioxus applications natively, but renders them with the system webview.
  • Mobile: A renderer that runs Dioxus applications natively, but renders them with the system webview. This is currently a copy of the desktop renderer.
  • Web: Renders Dioxus applications in the browser by compiling to WASM and manipulating the DOM.
  • Liveview: A renderer that runs on the server, and renders using a websocket proxy in the browser.
  • Rink: A renderer that renders a HTML-like tree into a terminal.
  • TUI: A renderer that uses Rink to render a Dioxus application in a terminal.
  • Blitz-Core: An experimental native renderer that renders a HTML-like tree using WGPU.
  • Blitz: An experimental native renderer that uses Blitz-Core to render a Dioxus application using WGPU.
  • SSR: A renderer that runs Dioxus applications on the server, and renders them to HTML.

State Management/Hooks

  • Hooks: A collection of common hooks for Dioxus applications
  • Signals: A experimental state management library for Dioxus applications. This currently contains a Copy version of UseRef
  • Dioxus STD: A collection of platform agnostic hooks to interact with system interfaces (The clipboard, camera, etc.).
  • Fermi: A global state management library for Dioxus applications. Router: A client-side router for Dioxus applications

Core utilities

  • core: The core virtual dom implementation every Dioxus application uses
  • RSX: The core parsing for RSX used for hot reloading, autoformatting, and the macro
  • core-macro: The rsx! macro used to write Dioxus applications. (This is a wrapper over the RSX crate)
  • HTML macro: A html-like alternative to the RSX macro

Native Renderer Utilities

Web renderer tooling

  • HTML: defines html specific elements, events, and attributes
  • Interpreter: defines browser bindings used by the web and desktop renderers

Developer tooling

  • hot-reload: Macro that uses the RSX crate to hot reload static parts of any rsx! macro. This macro works with any non-web renderer with an integration
  • autofmt: Formats RSX code
  • rsx-rosetta: Handles conversion between HTML and RSX
  • CLI: A Command Line Interface and VSCode extension to assist with Dioxus usage