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

时间:2012-04-08 19:21:37

标签: javascript model-view-controller node.js express

我目前正在使用Node.js的Express框架,我在每页(路由)的基础上包含样式表和javascript文件时遇到问题。我使用默认的Express设置和 routes / index.js 文件,其中包含以下内容:

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 with Express: Importing client-side javascript using script tags in Jade views? 但我不太热衷于那里显示的方法(它需要一个额外的帮助器)。如果可能的话,我想坚持模板引擎本身提供的功能。

感谢。

编辑:如果有帮助,我正在努力实现类似的目标:http://kerkness.ca/kowiki/doku.php?id=template-site:create_the_template

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

尝试使用dynamicHelpers。

它将作为脚本在jade模板中作为局部变量使用。

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