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

gjw*_*w80 31 html node.js express pug

我在一个Express for Node.js网络应用程序中从我的mongodb会话存储传递一个会话变量,如下所示:

exports.dashboard = function(req, res){
    res.render('dashboard', {pref: req.session.layoutpref});
}
Run Code Online (Sandbox Code Playgroud)

然后,在我的Jade文件中,我试图pref像这样分配css链接的值,但我得到一个语法错误:

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

我几乎可以肯定问题在于我pref对要使用的css文件的位置的连接.任何想法如何解决这一问题?

Pla*_*ato 61

#{}如果要在元素的内容中插入变量,请使用表示法.如果要在属性中使用它们,可以直接使用变量名称.

link(rel='stylesheet', href='/stylesheets/' + pref + '.css')
Run Code Online (Sandbox Code Playgroud)

当量:

link(rel='stylesheet', href='/stylesheets/' + locals.pref + '.css')
Run Code Online (Sandbox Code Playgroud)

何时使用#{}:

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


小智 5

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

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

link(rel='stylesheet', href=`/stylesheets/${pref}.css`)
Run Code Online (Sandbox Code Playgroud)

相等的:

link(rel='stylesheet', href='/stylesheets/' + pref + '.css')
Run Code Online (Sandbox Code Playgroud)