簡體   English   中英

Express中存在絕對路徑和相對路徑的困難

[英]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.usernamereq.params.bookmark則知道該路徑是什么。 如果要/username/bookmark/的路徑,則必須執行以下操作:

app.get("/username/bookmark/", function() {});
    //Do something
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM