链接到从子path呈现的Jade模板的静态文件

Node.js / Express / Jade有一个非常基本的问题,这个问题很难描述。 在我的node.js应用程序中,我使用Express框架来路由HTTP请求。 我也使用Jade模板作为视图,他们自己链接到通过app.use(express.static(__dirname + '/public'));声明为静态的目录内的文件(css,js等app.use(express.static(__dirname + '/public')); 命令。

当我将请求路由到像/about/contact这样的资源时,按预期工作。 但是我发现,只要我的资源有多个“关卡”,像这样/about/me ,相同的玉视图仍然会呈现,但是它在没有CSS样式的浏览器中结束!

所以我的假设是由资源层次表示的虚拟目录搞砸了,玉石认为它必须寻找相对path(在这种情况下,在哪里find包含静态文件的public目录)。

我不能在jade模板中加上前缀,因为我必须为不同的资源types使用相同的模板,所以我需要一个适用于任意资源级别的解决scheme。

有没有这样的解决scheme?

我猜你的Jade模板有如下所示:

 doctype html head link(rel="stylesheet", type="text/css", href="css/style.css") ... 

样式表的href是一个相对path,这意味着您的浏览器将查找与当前所在页面相关的CSS文件。 例如:

  • http://example.com/css/style.css
  • http://example.com/about/css/style.css

您可以将href更改为绝对path,因此无论您在哪个子目录中,CSS文件位置都将始终保持不变:

 link(rel="stylesheet", type="text/css", href="/css/style.css") 

这里的关键变化是在href开始时的正斜线,将相对path变成绝对path。