mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-27 14:40:44 +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");
|
||||
}
|
||||
html = html.replace("{style_include}", &style_str);
|
||||
|
||||
replace_or_insert_before("{style_include}", &style_str, "</head", &mut html);
|
||||
|
||||
let mut script_str = String::new();
|
||||
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 {
|
||||
html += &format!(
|
||||
|
@ -481,12 +482,33 @@ pub fn gen_page(config: &DioxusConfig, serve: bool) -> String {
|
|||
);
|
||||
}
|
||||
|
||||
html = html.replace("{app_name}", &config.application.name);
|
||||
|
||||
html = match &config.web.app.base_path {
|
||||
Some(path) => html.replace("{base_path}", path),
|
||||
None => html.replace("{base_path}", "."),
|
||||
let base_path = match &config.web.app.base_path {
|
||||
Some(path) => path,
|
||||
None => ".",
|
||||
};
|
||||
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
|
||||
.web
|
||||
|
@ -495,7 +517,22 @@ pub fn gen_page(config: &DioxusConfig, serve: bool) -> String {
|
|||
.clone()
|
||||
.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
|
||||
|
|
Loading…
Reference in a new issue