脚本中的条件。在玉

Conditionals within script. in jade

在 Jade 中,是否可以在动态脚本部分创建条件 if 语句?

例如:

doctype html
html
 head
  script.
   -if( locals.display_JS )
    console.log("Display_JS is TRUE")
   -else
    console.log("Display_JS is FALSE")

(locals.display_JS 是在 res.render 中传递给 Jade 的参数。)

如果 display_JS 为真,所需的输出应如下所示:

<script ...>console.log("Display_JS is TRUE")</script>

然而输出是:

<script>
 -if( locals.display_JS )
  console.log("Display_JS is TRUE")
 -else
  console.log("Display_JS is FALSE")
</script>

可能是我想错了。我的 objective 是根据发送给 res.render 的参数呈现不同的 javascript 函数。

Jade 不会混淆脚本块中的任何内容。如果你真的需要在脚本块中使用 jade 逻辑,你可以做一些像这样的事情:

路由器代码:

router.get('/', function(req, res){
    res.render('index', {run_this:true});
}); 

翡翠代码:

div
| <script type='text/javascript'>
if(run_this)
    | console.log("Ran this!");
else
    | console.log("Didn't run this");
| </script>

另一种 运行 基于脚本标签内的 jade 变量逻辑的方法是做这样的事情:

script.
    if(!{run_this}){
        console.log("Ran This!");
    }

也可以换一种方式,使用 .每当你想嵌套 javascript 代码时。

doctype html
html
 head
  script
    if( locals.display_JS )
      .
         /** Some JS code **/
         console.log("Display_JS is TRUE")
    else
      .
         console.log("Display_JS is FALSE")

当您使用script.时,jade 会将后面的所有内容解释为纯文本。如果您需要混合标记和纯文本,您可以使用 |。例如:

script
    | function bar(){
    if(true)
      | console.log("Ran this")
    else
      | console.log("Don't run this")
    | }