我试图让JavaScript渲染在我的页面上使用Jade (http://jade-lang.com/)

我的项目是在NodeJS与Express,一切都是正常工作,直到我想在头部写一些内联JavaScript。即使从Jade文档中得到例子,我也不能让它工作,我错过了什么?

玉模板

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

在浏览器中呈现的结果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>

这里肯定遗漏了一些东西有什么想法吗?


当前回答

使用指定类型的script标签,简单地将它包含在点之前:

script(type="text/javascript").
  if (10 == 10) {
    alert("working");
  }

这将编译为:

<script type="text/javascript">
  if (10 == 10) {
    alert("working");
  }
</script>

其他回答

使用指定类型的script标签,简单地将它包含在点之前:

script(type="text/javascript").
  if (10 == 10) {
    alert("working");
  }

这将编译为:

<script type="text/javascript">
  if (10 == 10) {
    alert("working");
  }
</script>

使用:javascript过滤器。这将生成一个脚本标记,并将脚本内容转义为CDATA:

!!! 5
html(lang="en")
  head
    title "Test"
    :javascript
      if (10 == 10) {
        alert("working")
      }
  body

不使用脚本标记。

|解决方案:

script
  | if (10 == 10) {
  |   alert("working")
  | }

或者用。

script.
  if (10 == 10) {
    alert("working")
  }

简单地使用“script”标签后加一个点。

script.
  var users = !{JSON.stringify(users).replace(/<\//g, "<\\/")}

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

:javascript过滤器在7.0版中被移除

文档说你现在应该使用一个script标签,后面跟着一个。Char字符,前面没有空格。

例子:

script.
  if (usingJade)
    console.log('you are awesome')
  else
    console.log('use jade')

将被编译为

<script>
  if (usingJade)
    console.log('you are awesome')
  else
    console.log('use jade')
</script>