Nodejs表示路由:如果添加了“/”,则没有样式

时间:2016-03-10 08:47:30

标签: javascript node.js express routes

我不知道如何表达它(这就是为什么谷歌无法帮助我...)所以让我举个例子。

如果我转到我的页面mypage.whatever/login,一切都很好。

但如果我转到mypage.whatever/login/,页面就没有样式。它只有HTML。

在我的主节点/快递文件中,我有app.use("/login", login);

在login.js文件中我有:

router.get("/", function(req,res){ res.render("login", {title: "Login page"}); });

我怎样才能纠正这种行为?

提前致谢。

编辑:

感谢Manasov Daniel和jfriend00,我找到了问题的来源。

当我添加“/”时,不包括样式表,因为路线搞砸了。

例如使用像这样的样式表

<link rel="stylesheet" href="stylesheets/login.css">

而不是寻找something/stylesheets/login.css

浏览器会搜索something/login/stylesheets/login.css

你们有没有想法如何解决它?

3 个答案:

答案 0 :(得分:2)

当你的样式表包含在这样的路径中时:

<link rel="stylesheet" href="stylesheets/login.css">

然后,浏览器将它们视为相对路径,并相对于当前页面的路径进行评估。这很少是你想要的共享资源,所以你应该改为使用这样的前导斜杠:

<link rel="stylesheet" href="/stylesheets/login.css">

当你没有尾随斜杠时,它的工作方式不同是因为当没有尾部斜杠时,/login被视为文件名,而/是路径。因此,stylesheets/login.css将与/结合使用,结果将为/stylesheets/login.css,并且可以正常使用。

但是,如果您使用/login/,那么将其视为路径,并将该路径与您的样式表链接结合使用,以便为/login/stylesheets/login.css提供无法使用的功能。

答案是始终在样式表链接中包含根路径(例如以/开头的内容)。然后,它们将不会与页面的路径组合,只与页面的域和端口组合。

答案 1 :(得分:0)

在主节点/快递文件中,您有:

app.use('/login', require('./your_file_path/login')); // login.js file path

在login.js文件中,您应该:

router.get("/login", function(req,res){
    res.render("login", {title: "Login page"});
});

答案 2 :(得分:0)

回答编辑部分:

在我的css路线上添加一个预斜线修复了问题。

即从href =“something / myfile.css”到href =“/ something / myfile.css”

我真的不明白为什么。