Express中绝对和相对path的困难
我在Express应用程序中有一个API的路线,如下所示:
app.get('/:username/:bookmark/', function(req, res) { // do stuff })
正如所料,这条路线解决了:
GET /username/bookmark/
不过,我想为我的静态资源使用相对的URL。 例如,我想要到我的main.css
的path来解决:
GET /css/main.css
相反,它现在解决了:
GET /username/bookmark/css/main.css
如何让我的应用程序将静态内容parsing为/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">
下面是一个具体的例子,使用express.static()中间件在./public文件中提供服务文件的典型用例:
app.use(express.static(__dirname + '/public'));
如果你在/username/bookmark/
和你这样链接CSS
<link href="css/main.css" />
或这个
<link href="./css/main.css" />
它将parsing为/username/bookmark/css/main.css
。 但是你想要像这样链接
<link href="/css/main.css" />
问题是, .static
-middleware只在基本path/
而不是你定义的所有路由路由。
解决scheme来源: 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”
使用try时:
app.get("/:username/:bookmark/", function(req, res) {});
使用:
你不会指定你得到的path,但它会得到所有的path,如果你inputreq.params.username
或req.params.bookmark
你就知道path是什么。 如果你想要的path/username/bookmark/
你必须这样做:
app.get("/username/bookmark/", function() {}); //Do something });