app.use(express.static(“ public”))如何与嵌套URL一起使用?

时间:2019-11-29 16:28:25

标签: node.js express

我对node还是很陌生,我正在设法把自己的头围绕在express.static中间件的工作方式上。在我的views文件夹中,有一些href像这样:

<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet" />

我的应用程序能够从URLS(例如localhost / about,localhost / contact等)获取这些文件。但是,如果端点是localhost / form / new之类的文件,它将无法获取文件。 express.static是从localhost / somefile获取这些静态资产,并且在存在嵌套URL时默认使用/ form / somefile(这将不起作用)吗?我知道,如果您在供应商之前放置“ /”,它将在任何级别上起作用,这是为什么呢?谢谢。

1 个答案:

答案 0 :(得分:1)

app.use(express.static(“public”));

这是一种表达方式“嘿,表达一下,看看是否有任何传入请求(例如GET /bundle.css与该目录中的文件匹配,如果是,则发送它!)。”

该目录上的任何文件,您都应该可以在/下访问。如果您是从本地主机提供服务的,并且在公用文件夹上有bundle.css,则可以访问http://localhost/bundle.css

您要从公用文件夹中获取的任何资产都应以/开头,这表示要查找绝对路径(在这种情况下,公用文件夹所提供的路径为/)。

更新

还有另一种方法,不建议使用相对路径

如果您位于 /about/index.html 中,并且尝试获取 /css/bundle.css (在公共文件夹下)

绝对路径:

<link rel="stylesheet" href="/css/bundle.css">

相对路径:(不推荐)

<link rel="stylesheet" href="../css/bundle.css">