Javascript 如何使用通过res.render传递的变量

Javascript 如何使用通过res.render传递的变量,javascript,node.js,pug,Javascript,Node.js,Pug,首先,我想为我的英语道歉 我在路由器文件中有以下代码: exports.index = function (req, res) { res.render('./game/main', {name:req.session.name, menuOp:'Home'}); } 然后是从另一个文件扩展而来的.jade [美文.杰德] extends mainLayout block topMenu -var selected = '#{menuOp}' 但这是一个错误。 我的问题是。。。

首先,我想为我的英语道歉

我在路由器文件中有以下代码:

exports.index = function (req, res) {
  res.render('./game/main', {name:req.session.name, menuOp:'Home'});
}
然后是从另一个文件扩展而来的.jade

[美文.杰德]

extends mainLayout

block topMenu
    -var selected = '#{menuOp}'
但这是一个错误。 我的问题是。。。为什么我可以打印变量但不能分配给其他变量?我的意思是,以下代码可以正常工作:

block topMenu
    h1 #{menuOp}
但当我尝试分配时,它不起作用

顺便说一句,我试过了,也成功了:

block topMenu
    -var selected = 'Home'

因此,我认为问题在于#{variable}只适用于打印或其他用途。

我们并不100%清楚您想要做什么,但我认为您想要的是:

block topMenu
    -var selected = '#' + menuOp

使用破折号时,Jade将以下内容解释为JavaScript,因此将变量放入字符串中不会扩展变量。如果你真的想要一个新的变量在字符串前面放一个散列,你可以使用上面的语法。

Hm,你确定吗?我试着用它来确保我的答案是准确的,而且对我来说效果很好。它是如何工作的?试试这个:
-var selected=menuOp好的,那就行了。。。但我想我已经试过了~。~谢谢。你能把它写进一个答案里,这样我就可以把它标为被接受的答案了吗?