Express(Node.js) – 有条件地包含CSS和JS文件

我目前正在使用Node.js的Express框架,并且在每页(路线)的基础上包括样式表和JavaScript文件。 我正在使用具有以下内容的routes / index.js文件的默认Express设置:

exports.index = function(req, res){ res.render('index', { title: 'Index Page Test' }) }; exports.browse = function(req, res){ res.render('browse', { title: 'Browse Page Test' }) }; 

上面的路线工作正常,并按预期将index.jade和browse.jade加载到layout.jade的“body”中。 但是,索引路由所需的资源(CSS和JS文件)与浏览路由所需的资源并不相同。 我有可能传递一个数组到包含所需资源的layout.jade模板,只是让它循环?

我试图通过以下方式来做到这一点:

Index.js(路线)

 scripts: [ 'javascripts/jquery.js', 'javascripts/easel.js', 'javascripts/script.js' ] 

其次是:

Layout.jade

  each js in scripts script(src= js) 

但是,它只是抛出一个错误,说“脚本没有定义”。 我很确定我没有这样做。 此外,只是添加,我偶然发现了另一个类似的StackOverflow问题在这里: Node.js与Express:导入客户端JavaScript使用Jade视图中的脚本标记? 但我并不太在意那里显示的方法(它需要一个额外的帮手)。 如果可能的话,我想坚持模板引擎本身提供的function。

谢谢。

编辑:如果有帮助,我想实现类似这样的事情: http : //kerkness.ca/kowiki/doku.php?id=template-site : create_the_template

尝试将脚本数组传递给像这样的视图:

 res.render('index', { title: 'Index Page Test', scripts: scripts}) 

尝试使用dynamicHelpers。

它将作为脚本在你的玉石模板中作为局部variables使用。

 app.dynamicHelpers({ scripts: function(req, res){ return ['javascripts/jquery.js', 'javascripts/easel.js','javascripts/script.js']; } });