1

我目前正在使用 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 的“主体”中。但是,索引路由所需的资源(CSS 和 JS 文件)与浏览路由所需的资源并不相同。我是否可以将一个数组传递给包含所需资产的 layout.jade 模板并简单地循环它?

我试图通过以下方式进行上述操作:

Index.js(路由)

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

其次是:

布局.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

4

2 回答 2

2

尝试将脚本数组传递给视图,如下所示:

res.render('index', { title: 'Index Page Test', scripts: scripts})
于 2012-04-08T19:46:51.843 回答
2

尝试使用动态助手。

它将作为脚本在您的玉模板中作为局部变量可用。

app.dynamicHelpers({
  scripts: function(req, res){
    return ['javascripts/jquery.js', 'javascripts/easel.js','javascripts/script.js'];
  }
});
于 2012-04-08T23:48:35.853 回答