[英]Difficulty with absolute and relative paths in Express
我在Express應用程序中有一條API路由,如下所示:
app.get('/:username/:bookmark/', function(req, res) {
// do stuff
})
如預期的那樣,此路由解析為:
GET /username/bookmark/
但是,我想為我的靜態資源使用相對URL。 例如,我希望到main.css
的路由解析為:
GET /css/main.css
相反,它當前解析為:
GET /username/bookmark/css/main.css
如何獲取我的應用程序以將靜態內容解析為/css/main.css
並從URL中刪除API的主要組件?
我認為您應該使用express
路由流程。
將以下行添加到您的app.js文件中
app.use(express.static(path.join(__dirname, 'public')));
將所有.css
文件放入{approot}/public/stylesheets
文件夾中。
並在HTML
文件中添加如下鏈接
<link rel="stylesheet" type="text/css" href="/stylesheets/index.css">
解決方案來源: https : //github.com/mongo-express/mongo-express/pull/205
我嘗試並成功,只需在鏈接之前添加“ /”,例如:
您在localhost:8080/courses/
而您的href是: href="style/style.css"
,則將轉到localhost:8080/courses/style/style.css.
解決方案是在前面加上“ /”,例如: href="/style/style.css"
,它將從根目錄“ localhost:8080/style/style.css"
這是一個具體的示例,以使用express.static()中間件在./public中提供文件的典型用例為例:
app.use(express.static(__dirname + '/public'));
如果您位於/username/bookmark/
並按以下方式鏈接CSS
<link href="css/main.css" />
或這個
<link href="./css/main.css" />
它將解析為/username/bookmark/css/main.css
。 但是你想這樣鏈接
<link href="/css/main.css" />
問題在於, .static
-middleware僅在基本路徑/
而不是您定義的所有路由進行路由。
使用try時:
app.get("/:username/:bookmark/", function(req, res) {});
使用:
您不會聲明要獲取的路徑,但會獲取所有路徑,並且如果輸入req.params.username
或req.params.bookmark
則知道該路徑是什么。 如果要/username/bookmark/
的路徑,則必須執行以下操作:
app.get("/username/bookmark/", function() {});
//Do something
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.