CSS 使用 actix-web 和 maud 无法正确读取文件
CSS file is not read properly using actix-web and maud
CSS 无法通过 actix-web 的 maud 的 link rel 属性工作。我在哪里犯了错误?
我认为我写link rel 属性的位置是正确的。
main.rs
use actix_files as fs;
use actix_web::{get, App, HttpServer, Result as AwResult};
use maud::{html, Markup};
#[get("/")]
async fn index() -> AwResult<Markup> {
Ok(html! {
head{
link rel="stylesheet" href="/static/style.css"{};
}
title{"Help me"}
p {"Blue text should be shown."}
})
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.service(fs::Files::new("/static", ".").show_files_listing())
.service(index)
})
.bind("0.0.0.0:80")?
.run()
.await?;
Ok(())
}
style.css
p {
color: blue;
font-size: 50px;
}
正在查看 actix_files::Files
的文档:
The first argument (mount_path) is the root URL at which the static files are served.
The second argument (serve_from) is the location on disk at which files are loaded.
您正在使用 /static
作为第一个参数,所以您的文件将在 http://0.0.0.0:80/static
下,好的。
但是作为第二个参数,您设置 .
是项目的根目录。这意味着您正在发布项目的整个源代码!例如,在 http://0.0.0.0:80/static/src/main.rs
(http://0.0.0.0:80/static/
是挂载点,./src/main.rs
是本地文件)您将下载二进制文件的源代码,而您不希望这样。
要解决您的问题,请改写:
fs::Files::new("/static", "./static")
第二个参数中的./
当然是可选的,但我喜欢它,因为它提醒你它是相对于当前工作目录的。
CSS 无法通过 actix-web 的 maud 的 link rel 属性工作。我在哪里犯了错误?
我认为我写link rel 属性的位置是正确的。
main.rs
use actix_files as fs;
use actix_web::{get, App, HttpServer, Result as AwResult};
use maud::{html, Markup};
#[get("/")]
async fn index() -> AwResult<Markup> {
Ok(html! {
head{
link rel="stylesheet" href="/static/style.css"{};
}
title{"Help me"}
p {"Blue text should be shown."}
})
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.service(fs::Files::new("/static", ".").show_files_listing())
.service(index)
})
.bind("0.0.0.0:80")?
.run()
.await?;
Ok(())
}
style.css
p {
color: blue;
font-size: 50px;
}
正在查看 actix_files::Files
的文档:
The first argument (mount_path) is the root URL at which the static files are served.
The second argument (serve_from) is the location on disk at which files are loaded.
您正在使用 /static
作为第一个参数,所以您的文件将在 http://0.0.0.0:80/static
下,好的。
但是作为第二个参数,您设置 .
是项目的根目录。这意味着您正在发布项目的整个源代码!例如,在 http://0.0.0.0:80/static/src/main.rs
(http://0.0.0.0:80/static/
是挂载点,./src/main.rs
是本地文件)您将下载二进制文件的源代码,而您不希望这样。
要解决您的问题,请改写:
fs::Files::new("/static", "./static")
第二个参数中的./
当然是可选的,但我喜欢它,因为它提醒你它是相对于当前工作目录的。