2011-11-24 46 views
5

如果你不知道jade是什么。
我有模板继承system.My文件结构的问题是,像这样玉的布局继承

/views/ 
    |-- layout.jade 
    /products/ 
     |-- index.jade 
     |-- product.jade 
/static/ 
    /stylesheets/ 
     |-- style.css 

的问题是,加载它接收ID作为参数(localhost上的商品页面时,3000 /产品/:如果ID不是/ id,它会加载得很好),虽然布局仍然正确地扩展了,但它并没有正确加载样式表(路径被破坏)。虽然我做了一半,但在产品的索引页面中,样式表加载得很好。

Layout.jade

head 
    link(rel='stylesheet', href='stylesheets/style.css') 

回答

9

它可能在href的相对路径。快递文档周围挖,我发现最流行的方法是从这样的网站的基本参考的样式表(注意/前面的样式表):

link(rel='stylesheet','/stylesheets/style.css') 

这具有容易受益,并跨越多个深度的路线(/ about,/ about/me等)工作。但是,它有不支持应用程序目录深度的负面影响。例如,如果您想要将您的应用程序托管在:http://yourserver/yourapps/yourapp这将是一个问题。我不知道你是否关心这个问题,绝大多数例子显然肯定不会:-)

但是,如果你想以正确的方式做到这一点,快递github上有一个例子网站:博客。 https://github.com/visionmedia/express/tree/master/examples/blog

这里的方法是使用中间件组件来获取基础URL,并将其填充到传递给布局视图的本地。这是你的HTML是什么样子:

!!! 5 
html 
    head 
    title Blog 
    link(rel='stylesheet', href=base + '/style.css') 
    body 
    #container!= body 

来检查,如果你需要这个方法是中间件/ locals.js的重要组成部分,app.js其中中间件组件连接好,并layout.jade其中使用基准href。

快乐编码!

+0

注意到/之前的样式表!这是关键!我很高兴现在感谢:D – andrei