我在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
并从网址中删除API的主要组件?
答案 0 :(得分:6)
我认为你应该选择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">
答案 1 :(得分:2)
solution 来源:https://github.com/mongo-express/mongo-express/pull/205
我尝试它的工作,只需添加&#34; /&#34;在链接之前,例如:
你在localhost:8080/courses/
你的href是:href="style/style.css"
你将进入localhost:8080/courses/style/style.css.
解决方案是添加&#34; /&#34;之前,例如:href="/style/style.css"
它将从root&#34; localhost:8080/style/style.css"
答案 2 :(得分:1)
这是一个具体的例子,使用express.static()中间件来获取在./public中提供文件的典型用例:
app.use(express.static(__dirname + '/public'));
答案 3 :(得分:1)
如果你在/username/bookmark/
并且你像这样链接CSS
<link href="css/main.css" />
或者
<link href="./css/main.css" />
它将解析为/username/bookmark/css/main.css
。但你想像这样链接
<link href="/css/main.css" />
问题是,.static
- 中间件仅在基本路径/
处路由而不是您定义的所有路由。
答案 4 :(得分:1)
使用试试时:
app.get("/:username/:bookmark/", function(req, res) {});
使用:
,您不会说明您获得的路径,但它会获取所有路径,并且您知道在键入req.params.username
或req.params.bookmark
时路径是什么。如果您想要/username/bookmark/
的路径,则必须执行此操作:
app.get("/username/bookmark/", function() {});
//Do something
});