使用 Coffeescript 和 Express .js 将变量传递给 Jade 时遇到麻烦

trouble passing variables to jade using coffeescript and express.js

本文关键字:Jade 麻烦 遇到 变量 Coffeescript Express js 使用      更新时间:2023-09-26

我是节点和表达的新手,并且正在开发使用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.get 定义路由时包含它们。值得一提的是,编译好的咖啡文件包含在页面顶部的 layout.jade 文件中,使用经典脚本标签:

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