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

Posted

技术标签:

【中文标题】在 Jade 文件中连接变量 + 字符串【英文标题】:Concatenating a variable + string in Jade file 【发布时间】:2013-10-23 16:49:06 【问题描述】:

我在 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 文件的位置。任何想法如何解决这个问题?

【问题讨论】:

【参考方案1】:

如果您想在元素的内容中插入变量,请使用# 表示法。如果你想在属性中使用变量名,你可以直接使用它们。

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

【讨论】:

【参考方案2】:

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

Node.js(从 v4.0.0 开始)支持template literals,所以

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

等效:

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

【讨论】:

以上是关于在 Jade 文件中连接变量 + 字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 Jade 包含中使用变量

在视图中转义变量?

Jade变量插值 - 如果属性未定义,则为默认值?

Express+jade:局部变量在视图中不可用

如何让 Jade 停止 HTML 编码元素属性,并生成文字字符串值?

在SSIS任务中避免使用Jade Db源连接超时