在Jade文件中连接变量和字符串

32

我正在通过以下方式在Express for Node.js Web应用程序中从我的MongoDB会话存储中传递会话变量:

exports.dashboard = function(req, res){
    res.render('dashboard', {pref: req.session.layoutpref});
}

然后,在我的Jade文件中,我试图将pref的值分配给CSS链接,就像这样,但是我遇到了语法错误:

head
        title #{title}
        link(rel='stylesheet', href='/stylesheets/' + #{pref} + '.css')

我几乎确定问题在于我将pref拼接到要使用的CSS文件位置中的方式。有什么想法如何修复这个问题吗?

2个回答

68

如果你想要在元素的内容中插入一个变量,可以使用#{} 符号进行插值。如果你想在属性中使用变量,直接使用变量名即可。

link(rel='stylesheet', href='/stylesheets/' + pref + '.css')

等价的:

link(rel='stylesheet', href='/stylesheets/' + locals.pref + '.css')

何时使用#{}:

a(href='/stylesheets/' + locals.pref + '.css') View the stylesheet at #{pref}

5

Jade文件在Node.js环境下被编译。

Node.js(从v4.0.0开始)支持模板字面量,因此

link(rel='stylesheet', href=`/stylesheets/${pref}.css`)

等效的:

link(rel='stylesheet', href='/stylesheets/' + pref + '.css')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接