2023-06-22 12:13:51 -07:00
|
|
|
use std::time::Duration;
|
|
|
|
|
2023-06-01 17:31:13 -05:00
|
|
|
use dioxus::prelude::*;
|
|
|
|
use dioxus_router::prelude::*;
|
2023-06-21 18:51:40 -07:00
|
|
|
|
2023-06-22 16:51:48 -07:00
|
|
|
use dioxus_ssr::incremental::{DefaultRenderer, IncrementalRendererConfig};
|
2023-06-01 17:31:13 -05:00
|
|
|
|
2023-06-24 13:44:22 -07:00
|
|
|
#[tokio::main]
|
|
|
|
async fn main() {
|
2023-07-26 10:28:49 -07:00
|
|
|
let mut renderer = IncrementalRendererConfig::new()
|
|
|
|
.static_dir("./static")
|
|
|
|
.invalidate_after(Duration::from_secs(10))
|
|
|
|
.build();
|
2023-06-01 17:31:13 -05:00
|
|
|
|
2023-06-26 16:08:53 -07:00
|
|
|
println!(
|
|
|
|
"SITE MAP:\n{}",
|
|
|
|
Route::SITE_MAP
|
|
|
|
.iter()
|
|
|
|
.flat_map(|route| route.flatten().into_iter())
|
|
|
|
.map(|route| {
|
|
|
|
route
|
|
|
|
.iter()
|
|
|
|
.map(|segment| segment.to_string())
|
|
|
|
.collect::<Vec<_>>()
|
|
|
|
.join("")
|
|
|
|
})
|
|
|
|
.collect::<Vec<_>>()
|
|
|
|
.join("\n")
|
|
|
|
);
|
|
|
|
|
2023-08-25 15:00:38 -04:00
|
|
|
// This function is available if you enable the ssr feature
|
|
|
|
// on the dioxus_router crate.
|
2023-07-26 10:28:49 -07:00
|
|
|
pre_cache_static_routes::<Route, _>(
|
|
|
|
&mut renderer,
|
|
|
|
&DefaultRenderer {
|
|
|
|
before_body: r#"<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<meta name="viewport" content="width=device-width,
|
|
|
|
initial-scale=1.0">
|
|
|
|
<title>Dioxus Application</title>
|
|
|
|
</head>
|
|
|
|
<body>"#
|
|
|
|
.to_string(),
|
|
|
|
after_body: r#"</body>
|
|
|
|
</html>"#
|
|
|
|
.to_string(),
|
|
|
|
},
|
|
|
|
)
|
|
|
|
.await
|
|
|
|
.unwrap();
|
2023-06-01 17:31:13 -05:00
|
|
|
}
|
|
|
|
|
2023-09-15 16:13:36 +02:00
|
|
|
#[component]
|
2024-01-13 20:51:37 -08:00
|
|
|
fn Blog() -> Element {
|
2024-01-16 13:18:46 -06:00
|
|
|
rsx! {
|
2023-06-21 18:36:32 -07:00
|
|
|
div {
|
|
|
|
"Blog"
|
2023-06-01 17:31:13 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-09-15 16:13:36 +02:00
|
|
|
#[component]
|
2024-01-13 20:51:37 -08:00
|
|
|
fn Post(id: usize) -> Element {
|
2024-01-16 13:18:46 -06:00
|
|
|
rsx! {
|
2023-06-01 17:31:13 -05:00
|
|
|
div {
|
2023-06-21 18:36:32 -07:00
|
|
|
"PostId: {id}"
|
2023-06-01 17:31:13 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-09-15 16:13:36 +02:00
|
|
|
#[component]
|
2024-01-13 20:51:37 -08:00
|
|
|
fn PostHome() -> Element {
|
2024-01-16 13:18:46 -06:00
|
|
|
rsx! {
|
2023-06-01 17:31:13 -05:00
|
|
|
div {
|
|
|
|
"Post"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-09-15 16:13:36 +02:00
|
|
|
#[component]
|
2024-01-13 20:51:37 -08:00
|
|
|
fn Home() -> Element {
|
2024-01-16 13:18:46 -06:00
|
|
|
rsx! {
|
2023-06-01 17:31:13 -05:00
|
|
|
div {
|
|
|
|
"Home"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[rustfmt::skip]
|
|
|
|
#[derive(Clone, Debug, PartialEq, Routable)]
|
|
|
|
enum Route {
|
|
|
|
#[nest("/blog")]
|
|
|
|
#[route("/")]
|
|
|
|
Blog {},
|
2023-06-21 18:36:32 -07:00
|
|
|
#[route("/post/index")]
|
|
|
|
PostHome {},
|
|
|
|
#[route("/post/:id")]
|
|
|
|
Post {
|
|
|
|
id: usize,
|
|
|
|
},
|
2023-06-01 17:31:13 -05:00
|
|
|
#[end_nest]
|
|
|
|
#[route("/")]
|
|
|
|
Home {},
|
|
|
|
}
|