Jade - 在 script 标签内使用块

9

你好,我正在尝试使用Jade的扩展来完成一个node.js项目,我的想法是创建如下内容:

layout.jade:

head
    script
        $(document).ready(function() {
        block js_doc_ready
            //here goes the doc ready
        });

index.jade:

block js_doc_ready
    alert('hello!');
    alert('one more js line code');
    alert('end my js doc ready for this view');

这将给我一个类似于以下的 index.html 文件:
...
<head>
    <script type="text/javascript">
            $(document).ready(function() {
                alert('hello!');
                alert('one more js line code');
                alert('end my js doc ready for this view');         
            });
    </script>
</head>
...

但是当我看到结果时,'block js_doc_ready'并没有被视为Jade块。 此外,即使它被视为块,"alert('hello!);'也不会被视为Jade标签,而是作为普通文本处理。
这是我以前在django模板中做的事情,但在jade中,由于有太多的标签可用,且不能自由地使用纯html,所以我仍然觉得这些东西有点奇怪。
1个回答

23

Jade 不会翻译 'style' 和 'script' 代码块内部的内容。永远不会。

可以使用我在另一个问题中提供的答案(使用 style 元素,但基本上是相同的)。

!!!
head
  title Hello jade
  | <script type='text/javascript'>
  | $(document).ready(function() {
      block js_doc_ready
  | });
  | </script>
这样做:jade将包含HTML的'script'标签和$.ready行,但也会包含您的块。

谢谢!我使用了类似以下的方式:title Hello jade !="但这种方法看起来有点麻烦... 我能否在不使用 | 的情况下拥有多行字符串? - Arruda
请注意:JavaScript 类型为 'text/javascript' 而不是 'text\javascript'。 - Moshe Simantov
我认为你也忘记关闭ready函数了..应该在第7行写成| });。 - lukejacksonn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接