2011-11-24 47 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