如何使用Jade/Pug呈现内联JavaScript?

JMW*_*ker 214 node.js express pug

我正在尝试使用Jade(http://jade-lang.com/)在我的页面上呈现JavaScript

我的项目在NodeJS中使用Express,eveything正常工作,直到我想在脑中编写一些内联JavaScript.即使从Jade文档中获取示例,我也无法让它工作,我错过了什么?

玉模板

!!! 5
html(lang="en")
  head
    title "Test"
    script(type='text/javascript')
      if (10 == 10) {
        alert("working")
      }
  body
Run Code Online (Sandbox Code Playgroud)

在浏览器中生成呈现的HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <title>"Test"</title>
  <script type="text/javascript">
    <if>(10 == 10) {<alert working></alert></if>}
  </script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在某些想法中,有些想法肯定会错过吗?

lia*_*zan 352

只需使用带有点后面的'script'标签即可.

script.
  var users = !{JSON.stringify(users).replace(/<\//g, "<\\/")}
Run Code Online (Sandbox Code Playgroud)

https://github.com/pugjs/pug/blob/master/examples/dynamicscript.pug

  • `type ="text/javascript"`是`<script>`标签上`type`字段的默认值.您无需进行设置. (45认同)
  • 这对我有用.(您不需要脚本标记中的类型) (10认同)
  • Jade的策略发生了变化,内联脚本标签现在应该附加一个`.`.所以`脚本`后跟你缩进的JS块. (6认同)
  • 该示例是脚本注入漏洞.请参阅https://github.com/visionmedia/jade/issues/1474 (4认同)

Fel*_*ino 101

:javascript在移除过滤器7.0版本

文件说,你应该用script现在的标签,随后.char和没有前面的空间.

例:

script.
  if (usingJade)
    console.log('you are awesome')
  else
    console.log('use jade')
Run Code Online (Sandbox Code Playgroud)

将被编译为

<script>
  if (usingJade)
    console.log('you are awesome')
  else
    console.log('use jade')
</script>
Run Code Online (Sandbox Code Playgroud)


小智 48

使用指定类型的脚本标记,只需在点之前包含它:

script(type="text/javascript").
  if (10 == 10) {
    alert("working");
  }
Run Code Online (Sandbox Code Playgroud)

这将编译为:

<script type="text/javascript">
  if (10 == 10) {
    alert("working");
  }
</script>
Run Code Online (Sandbox Code Playgroud)

想对梁赞的回答发表评论,但没有足够的声誉.希望这可以帮助

  • 只需`script.` 就可以了。 (2认同)

Oli*_*r C 23

不使用脚本标记.

解决方案|:

script
  | if (10 == 10) {
  |   alert("working")
  | }
Run Code Online (Sandbox Code Playgroud)

或者用.:

script.
  if (10 == 10) {
    alert("working")
  }
Run Code Online (Sandbox Code Playgroud)

  • 我推荐`.`.否则你必须在每一行写```. (4认同)

Joh*_*len 3

我的答案的第三个版本:

这是内联 Jade Javascript 的多行示例。我认为如果不使用-. 这是我在部分中使用的闪存消息示例。希望这可以帮助!

-if(typeof(info) !== 'undefined')
  -if (info)
    - if(info.length){
      ul
        -info.forEach(function(info){
          li= info
      -})
  -}
Run Code Online (Sandbox Code Playgroud)

您正在尝试获取编译问题中的代码的代码吗?

如果是这样,你不需要两件事:第一,你不需要声明它是Javascript/脚本,你可以在输入后开始编码-;其次,输入后-if您不需要输入{}。这就是 Jade 非常甜美的原因。

--------------原答案如下--------------

尝试在前面if添加-

-if(10 == 10)
  //do whatever you want here as long as it's indented two spaces from
   the `-` above
Run Code Online (Sandbox Code Playgroud)

还有大量 Jade 示例:

https://github.com/visionmedia/jade/blob/master/examples/