mirror of
https://github.com/DioxusLabs/dioxus
synced 2025-02-17 06:08:26 +00:00
Automatically insert scripts if they are not found
This commit is contained in:
parent
5f35fa6e16
commit
16ab96aa0a
1 changed files with 45 additions and 8 deletions
|
@ -462,7 +462,8 @@ pub fn gen_page(config: &DioxusConfig, serve: bool) -> String {
|
||||||
{
|
{
|
||||||
style_str.push_str("<link rel=\"stylesheet\" href=\"tailwind.css\">\n");
|
style_str.push_str("<link rel=\"stylesheet\" href=\"tailwind.css\">\n");
|
||||||
}
|
}
|
||||||
html = html.replace("{style_include}", &style_str);
|
|
||||||
|
replace_or_insert_before("{style_include}", &style_str, "</head", &mut html);
|
||||||
|
|
||||||
let mut script_str = String::new();
|
let mut script_str = String::new();
|
||||||
for script in script_list {
|
for script in script_list {
|
||||||
|
@ -472,7 +473,7 @@ pub fn gen_page(config: &DioxusConfig, serve: bool) -> String {
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
html = html.replace("{script_include}", &script_str);
|
replace_or_insert_before("{script_include}", &script_str, "</body", &mut html);
|
||||||
|
|
||||||
if serve {
|
if serve {
|
||||||
html += &format!(
|
html += &format!(
|
||||||
|
@ -481,12 +482,33 @@ pub fn gen_page(config: &DioxusConfig, serve: bool) -> String {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
html = html.replace("{app_name}", &config.application.name);
|
let base_path = match &config.web.app.base_path {
|
||||||
|
Some(path) => path,
|
||||||
html = match &config.web.app.base_path {
|
None => ".",
|
||||||
Some(path) => html.replace("{base_path}", path),
|
|
||||||
None => html.replace("{base_path}", "."),
|
|
||||||
};
|
};
|
||||||
|
let app_name = &config.application.name;
|
||||||
|
// Check if a script already exists
|
||||||
|
if html.contains("{app_name}") && html.contains("{base_path}") {
|
||||||
|
html = html.replace("{app_name}", app_name);
|
||||||
|
|
||||||
|
html = html.replace("{base_path}", base_path);
|
||||||
|
} else {
|
||||||
|
// If not, insert the script
|
||||||
|
html = html.replace(
|
||||||
|
"</body",
|
||||||
|
&format!(
|
||||||
|
r#"<script type="module">
|
||||||
|
import init from "/{base_path}/assets/dioxus/{app_name}.js";
|
||||||
|
init("/{base_path}/assets/dioxus/{app_name}_bg.wasm").then(wasm => {{
|
||||||
|
if (wasm.__wbindgen_start == undefined) {{
|
||||||
|
wasm.main();
|
||||||
|
}}
|
||||||
|
}});
|
||||||
|
</script>
|
||||||
|
</body"#
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let title = config
|
let title = config
|
||||||
.web
|
.web
|
||||||
|
@ -495,7 +517,22 @@ pub fn gen_page(config: &DioxusConfig, serve: bool) -> String {
|
||||||
.clone()
|
.clone()
|
||||||
.unwrap_or_else(|| "dioxus | ⛺".into());
|
.unwrap_or_else(|| "dioxus | ⛺".into());
|
||||||
|
|
||||||
html.replace("{app_title}", &title)
|
replace_or_insert_before("{app_title}", &title, "</title", &mut html);
|
||||||
|
|
||||||
|
html
|
||||||
|
}
|
||||||
|
|
||||||
|
fn replace_or_insert_before(
|
||||||
|
replace: &str,
|
||||||
|
with: &str,
|
||||||
|
or_insert_before: &str,
|
||||||
|
content: &mut String,
|
||||||
|
) {
|
||||||
|
if content.contains(replace) {
|
||||||
|
*content = content.replace(replace, with);
|
||||||
|
} else {
|
||||||
|
*content = content.replace(or_insert_before, &format!("{}{}", with, or_insert_before));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// this function will build some assets file
|
// this function will build some assets file
|
||||||
|
|
Loading…
Add table
Reference in a new issue