浏览代码

fix the macro export and WIP hot reloading docs

Evan Almloff 2 年之前
父节点
当前提交
82048737f4

+ 1 - 1
docs/guide/src/en/SUMMARY.md

@@ -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)

+ 41 - 8
docs/guide/src/en/getting_started/hot_reload.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
-1. run:
-```
+## Usage
+
+1. Run:
+```bash 
 dioxus serve --hot-reload
 dioxus serve --hot-reload
 ```
 ```
-2. change some code within a rsx macro
-3. open your localhost in a browser
-4. save and watch the style change without recompiling
+2. Change some code within a rsx or render macro
+3. Open your localhost in a browser
+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.

+ 3 - 1
packages/dioxus/Cargo.toml

@@ -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]

+ 3 - 0
packages/dioxus/src/lib.rs

@@ -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;
 }
 }

+ 3 - 1
packages/hot-reload/src/lib.rs

@@ -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;