2013-04-11 45 views
0

我正在使用Node.js,Express和Jade進行一些項目,我想在其中分離佈局文件。在主文件裏面已經有了獨立的頭文件,但是我不知道如何在需要傳遞數據的子文件中執行此操作。在這種情況下,我需要將數據傳遞給頁面上每個視圖的小部件,但是在路徑中將太多的事情加載到小部件中,而不是我正在尋找的一些簡單解決方案。Node.js,Express,Jade - 分開的佈局文件

我可以在上面描述的方式上做這件事情 - 在每次請求時加載數據,但是這在某種程度上是時間& cpu消耗。 我想到的另一種方式是爲小部件創建一些子佈局,在這些小部件中我會加載一次數據,然後在所有請求中都不會從DB調用數據的情況下始終可用。什麼是最好的方式來做到這一點?

回答

0

鬍子工作,但我想你可以使用我do.In大部分我使用有一個共同的頁眉和頁腳的鬍子模板類似的策略section.Along與腳本和CSS files.I已創建一個單獨的部分文件,導出這些部分 。例如我的部分文件看起來像這樣。

exports.partials = function (isAuthenticated) 
{ 
    var menu; 

    isAuthenticated ? 
    menu = { 
     header: '', 
     footer: ' ' 
    } : 
    menu = { 
     header: '', 
     footer: '' 
    } 
    return menu; 
}; 
exports.staticResources = { 
    bootstrap :'//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css', 
    fonts : '//netdna.bootstrapcdn.com/font-awesome/3.0/css/font-awesome.css', 
    jquery : '//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'   
}; 

我有另一種方法稱爲generatePartials它的名稱建議爲我的模板

exports.generatePartials = function(isAuthenticated){ 
var menu = resources.partials(isAuthenticated); 
var partials = { 
    header : menu.header, 
    footer : menu.footer, 
    bootstrap : resources.staticResources.bootstrap, 
    fonts :resources.staticResources.fonts, 
    jquery :resources.staticResources.jquery, 
}; 
return partials; 
}; 

諧音現在在渲染模板所有我需要做的就是這個

app.get('/routeName',function (req, res){ 
var partials = require('../helpers').generatePartials(req.isAuthenticated()); 
return res.render('viewName.html', partials); 
}; 

就是這樣。

相關問題