2013-04-11 70 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); 
}; 

就是这样。

相关问题