2016-03-10 41 views
0

我不知道如何为它添加词组(这就是为什么谷歌无法帮助我......)让我给你举个例子。Nodejs express路由:如果添加了“/”,没有样式

如果我去我的页面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丹尼尔和jfriend00,我发现问题出在哪里来的。

当我添加“/”时,样式表不包含在内,因为路由会混乱。

举例来说,像这样

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

样式表而不是寻找something/stylesheets/login.css

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

你们是否有一个想法如何解决呢?

+0

试试这个'app.use(“/ login/*”,login);' –

+0

你能显示'login'模板的内容吗?我认为问题出现在样式表路线中。 –

+0

您在HTML文件中使用什么路径来处理CSS文件?您是否在浏览器控制台中看到任何错误? – jfriend00

回答

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"}); 
}); 
+0

我确实有这个,我忘了包括它对不起。 “login”变量引用var login = require(“./ routes/login”); –

0

要回答的编辑部分:

添加一个预斜杠到我的CSS路线修复了这个问题。

即从HREF = “东西/ myfile.css” 到HREF = “/事/ myfile.css”

我真的不明白为什么虽然。

+0

这是相对路径('something/myfile.css')和绝对路径('/ something/myfile.css')之间的区别。相对路径从当前位置开始,因为这个问题将是'login',而绝对路径则从应用程序根目录开始。 –

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不起作用。

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

相关问题