使用coffeescript和express.js将变量传递给jade的麻烦

时间:2012-07-02 22:08:29

标签: javascript node.js express pug

我是节点的新手,表达并使用jade作为模板语言的应用程序的前端工作。还有一些东西,我仍然无法缠绕我的大脑和详尽的谷歌搜索和搜索这里没有挖出答案。

我的应用结构:

    myapp/
    | - app.coffee
    | - config.coffee
    | - assets/ 
            | - scripts
                    my coffeescript files   (test.coffee)           
            | - stylesheets
                    my sass files
    | - public/ 
            | - images
            | - scripts
                    my coffeescript compiled as js (test.js)
            | - css
                    my sass files compiled as css
    | - views/ 
            | - jade files, layouts, partials etc

目前,如果我在app.coffee中定义变量,我可以将变量传递给jade,例如,如果我这样做:

    app.get '/', (req, res) ->
      res.render 'landing',
        testvar: 'a test string'

然后我可以说:

    p #{testvar}

进入landing.jade,它将呈现为:

    <p>a test string</p>

这一切都很好。但是,如果我想在我位于资产中的其他coffeescript文件中定义变量或对象,然后由jade呈现它,该怎么办?最好的方法是什么?这可能吗?我已经研究了快速曝光,但似乎这不是我正在寻找的,或者我可能没有正确理解它。

我想避免的是用一堆对象/变量弄脏我的app.coffee文件,我宁愿在我的资产咖啡文件中定义它们,然后在我用app定义路线时包含它们。得到。值得一提的是,编译后的咖啡文件使用经典脚本标记包含在页面顶部的layout.jade文件中:

    script(src='scripts/test.js')

1 个答案:

答案 0 :(得分:0)

app.locals.use (req, res) ->
  res.locals.script = (s) ->
    "<script type=\"text/javascript\" src=\"#{s}\"></script>"