prefech wasm + JS by default

This commit is contained in:
Evan Almloff 2023-03-31 16:16:47 -05:00
parent bfcb0f6eab
commit 5ffdb4dbed
2 changed files with 27 additions and 19 deletions

View file

@ -41,15 +41,12 @@ fn main() {
// If the path is unknown, render the application
.fallback(
move |uri: http::uri::Uri, State(ssr_state): State<SSRState>| {
let rendered = ssr_state.render(
&ServeConfig::new(
App,
AppProps {
route: Some(format!("http://{addr}{uri}")),
},
)
.head(r#"<title>Hello World!</title>"#),
);
let rendered = ssr_state.render(&ServeConfig::new(
App,
AppProps {
route: Some(format!("http://{addr}{uri}")),
},
));
async move { axum::body::Full::from(rendered) }
},
)

View file

@ -20,25 +20,36 @@ fn dioxus_ssr_html<P: 'static + Clone>(cfg: &ServeConfig<P>, renderer: &mut Rend
let mut vdom = VirtualDom::new_with_props(*app, props.clone());
let _ = vdom.rebuild();
let base_path = base_path.unwrap_or(".");
let head = head.unwrap_or(
r#"<title>Dioxus Application</title>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charset="UTF-8" />"#,
);
let mut html = String::new();
if let Err(err) = write!(
&mut html,
r#"
let result = match head {
Some(head) => {
write!(
&mut html,
r#"
<!DOCTYPE html>
<html>
<head>{head}
</head>
<body>
<div id="main">"#
) {
)
}
None => {
write!(
&mut html,
r#"<title>Dioxus Application</title>
<link rel="preload" href="/{base_path}/assets/dioxus/{application_name}_bg.wasm" as="fetch" type="application/wasm" crossorigin="" />
<link rel="modulepreload" href="/{base_path}/assets/dioxus/{application_name}.js" />
<meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charset="UTF-8" />"#
)
}
};
if let Err(err) = result {
eprintln!("Failed to write to html: {}", err);
}