【问题标题】:Express (Node.js) - Include CSS and JS files conditionallyExpress (Node.js) - 有条件地包含 CSS 和 JS 文件
【发布时间】:2012-04-21 09:10:22
【问题描述】:

我目前正在使用 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

【问题讨论】:

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


    【解决方案1】:

    尝试使用 dynamicHelpers。

    它将作为脚本在您的翡翠模板中作为局部变量使用。

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

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 对不起,如果我没有说清楚,但我已经尝试过该方法,它只会抛出“未定义脚本”错误。
    • 那么你显然做错了什么:)我试过这个,它对我有用
    • 您使用的是什么版本的快递?此外,在您的示例中,脚本似乎是某个对象的成员。能贴出完整代码吗?
    • 对不起。我刚刚意识到我相当尴尬的新手错误。我已经习惯了使用 PHP 进行修改后我没有重新启动应用程序。现在可以了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2012-07-27
    • 2013-02-28
    • 2015-04-24
    相关资源
    最近更新 更多