javascript - Nodejs快速路由: no styling if "/" is added

标签 javascript node.js express routes

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

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

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

在我的主 Node/express 文件中,我有 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

你们知道如何解决这个问题吗?

最佳答案

当您的样式表包含在如下路径中时:

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

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

关于javascript - Nodejs快速路由: no styling if "/" is added,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35911495/

相关文章:

javascript - Angular Chosen 默认选择不起作用

node.js - 在 azure devops 中在管道作业级别拥有 .env 文件的最佳方法是什么

node.js - 我可以在不使用 res.render/return 信息给用户的情况下以 Express 方式渲染 html 吗?

javascript - node.js 和 express 中的异常处理

javascript - 如何在自定义区域中使用cloudkit js分配对记录的引用?

javascript - 将blade user.id路由传递给react js组件

node.js - 生产环境中的 Meteor.js 上传文件夹

javascript - 响应呈现 Jade 并在 sqlite3 完成查询之前发送

javascript - 使用保留日志访问登录密码

javascript - FB auth 的正确方法