fix the macro export and WIP hot reloading docs
This commit is contained in:
1 parent
19aaa0ee5b
commit
82048737f4
5 files changed
+51
-11
No files matched your search
@@ -5,11 +5,11 @@
|
|||||||
- [Getting Started](getting_started/index.md)
|
- [Getting Started](getting_started/index.md)
|
||||||
- [Desktop](getting_started/desktop.md)
|
- [Desktop](getting_started/desktop.md)
|
||||||
- [Web](getting_started/web.md)
|
- [Web](getting_started/web.md)
|
||||||
- [Hot Reload](getting_started/hot_reload.md)
|
|
||||||
- [Server-Side Rendering](getting_started/ssr.md)
|
- [Server-Side Rendering](getting_started/ssr.md)
|
||||||
- [Liveview](getting_started/liveview.md)
|
- [Liveview](getting_started/liveview.md)
|
||||||
- [Terminal UI](getting_started/tui.md)
|
- [Terminal UI](getting_started/tui.md)
|
||||||
- [Mobile](getting_started/mobile.md)
|
- [Mobile](getting_started/mobile.md)
|
||||||
|
- [Hot Reloading](getting_started/hot_reload.md)
|
||||||
- [Describing the UI](describing_ui/index.md)
|
- [Describing the UI](describing_ui/index.md)
|
||||||
- [Special Attributes](describing_ui/special_attributes.md)
|
- [Special Attributes](describing_ui/special_attributes.md)
|
||||||
- [Components](describing_ui/components.md)
|
- [Components](describing_ui/components.md)
|
||||||
|
|||||||
@@ -2,20 +2,53 @@
|
|||||||
|
|
||||||
1. Hot reloading allows much faster iteration times inside of rsx calls by interpreting them and streaming the edits.
|
1. Hot reloading allows much faster iteration times inside of rsx calls by interpreting them and streaming the edits.
|
||||||
2. It is useful when changing the styling/layout of a program, but will not help with changing the logic of a program.
|
2. It is useful when changing the styling/layout of a program, but will not help with changing the logic of a program.
|
||||||
3. Currently the cli only implements hot reloading for the web renderer.
|
3. Currently the cli only implements hot reloading for the web renderer. For TUI, desktop, and liveview you can use the hot reload macro.
|
||||||
|
|
||||||
|
# Web
|
||||||
|
|
||||||
|
For the web renderer, you can use the dioxus cli to serve your application with hot reloading enabled.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
# Setup
|
|
||||||
Install [dioxus-cli](https://github.com/DioxusLabs/cli).
|
Install [dioxus-cli](https://github.com/DioxusLabs/cli).
|
||||||
Hot reloading is automatically enabled when using the web renderer on debug builds.
|
Hot reloading is automatically enabled when using the web renderer on debug builds.
|
||||||
|
|
||||||
# Usage
|
## Usage
|
||||||
1. run:
|
|
||||||
```
|
1. Run:
|
||||||
|
```bash
|
||||||
dioxus serve --hot-reload
|
dioxus serve --hot-reload
|
||||||
```
|
```
|
||||||
2. change some code within a rsx macro
|
2. Change some code within a rsx or render macro
|
||||||
3. open your localhost in a browser
|
3. Open your localhost in a browser
|
||||||
4. save and watch the style change without recompiling
|
4. Save and watch the style change without recompiling
|
||||||
|
|
||||||
|
# Desktop/Liveview/TUI
|
||||||
|
|
||||||
|
For desktop, LiveView, and tui, you can place the hot reload macro before your app runs to enable hot reloading.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Add the following to your main function:
|
||||||
|
|
||||||
|
```rust
|
||||||
|
fn main() {
|
||||||
|
dioxus::hot_reload_init!();
|
||||||
|
// launch your application
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
1. Run:
|
||||||
|
```bash
|
||||||
|
cargo run
|
||||||
|
```
|
||||||
|
2. Change some code within a rsx or render macro
|
||||||
|
3. Save and watch the style change without recompiling
|
||||||
|
|
||||||
|
## Custom renders
|
||||||
|
|
||||||
|
For custom renderers
|
||||||
|
|
||||||
# Limitations
|
# Limitations
|
||||||
1. The interpreter can only use expressions that existed on the last full recompile. If you introduce a new variable or expression to the rsx call, it will trigger a full recompile to capture the expression.
|
1. The interpreter can only use expressions that existed on the last full recompile. If you introduce a new variable or expression to the rsx call, it will trigger a full recompile to capture the expression.
|
||||||
|
|||||||
@@ -17,12 +17,14 @@ dioxus-html = { path = "../html", version = "^0.3.0", optional = true }
|
|||||||
dioxus-core-macro = { path = "../core-macro", version = "^0.3.0", optional = true }
|
dioxus-core-macro = { path = "../core-macro", version = "^0.3.0", optional = true }
|
||||||
dioxus-hooks = { path = "../hooks", version = "^0.3.0", optional = true }
|
dioxus-hooks = { path = "../hooks", version = "^0.3.0", optional = true }
|
||||||
dioxus-rsx = { path = "../rsx", version = "0.0.2", optional = true }
|
dioxus-rsx = { path = "../rsx", version = "0.0.2", optional = true }
|
||||||
|
dioxus-hot-reload = { path = "../hot-reload", version = "0.1.0", optional = true }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["macro", "hooks", "html"]
|
default = ["macro", "hooks", "html", "hot-reload"]
|
||||||
macro = ["dioxus-core-macro", "dioxus-rsx"]
|
macro = ["dioxus-core-macro", "dioxus-rsx"]
|
||||||
html = ["dioxus-html"]
|
html = ["dioxus-html"]
|
||||||
hooks = ["dioxus-hooks"]
|
hooks = ["dioxus-hooks"]
|
||||||
|
hot-reload = ["dioxus-hot-reload"]
|
||||||
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|||||||
@@ -31,4 +31,7 @@ pub mod prelude {
|
|||||||
|
|
||||||
#[cfg(feature = "html")]
|
#[cfg(feature = "html")]
|
||||||
pub use dioxus_elements::{prelude::*, GlobalAttributes, SvgAttributes};
|
pub use dioxus_elements::{prelude::*, GlobalAttributes, SvgAttributes};
|
||||||
|
|
||||||
|
#[cfg(feature = "hot-reload")]
|
||||||
|
pub use dioxus_hot_reload::hot_reload_init;
|
||||||
}
|
}
|
||||||
@@ -152,7 +152,7 @@ pub fn connect(mut f: impl FnMut(Template<'static>) + Send + 'static) {
|
|||||||
/// Pass any number of paths to listen for changes on relative to the crate root as strings.
|
/// Pass any number of paths to listen for changes on relative to the crate root as strings.
|
||||||
/// If no paths are passed, it will listen on the src and examples folders.
|
/// If no paths are passed, it will listen on the src and examples folders.
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! hot_reload {
|
macro_rules! hot_reload_init_inner {
|
||||||
() => {
|
() => {
|
||||||
dioxus_hot_reload::init(core::env!("CARGO_MANIFEST_DIR"), &["src", "examples"])
|
dioxus_hot_reload::init(core::env!("CARGO_MANIFEST_DIR"), &["src", "examples"])
|
||||||
};
|
};
|
||||||
@@ -161,3 +161,5 @@ macro_rules! hot_reload {
|
|||||||
dioxus_hot_reload::init(core::env!("CARGO_MANIFEST_DIR"), &[$($paths),*])
|
dioxus_hot_reload::init(core::env!("CARGO_MANIFEST_DIR"), &[$($paths),*])
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub use hot_reload_init_inner as hot_reload_init;
|
||||||
Reference in new issue
Block a user