Jade:多个属性的新警告

时间:2013-10-04 15:11:44

标签: javascript node.js express pug

我已将jade更新为最新版本,并开始在控制台中看到此消息

You should not have jade tags with multiple attributes

它被称为功能here

0.33.0 / 2013-07-12
Hugely more powerful error reporting (especially with compileDebug set explicitly to true)
Add a warning for tags with multiple attributes

我在代码中看到了它。 https://github.com/visionmedia/jade/blob/a38aa552f6f53554ac5605299b6b8c7e07cbdf1f/lib/parser.js#L662

但是,它真正意味着什么。我什么时候会得到这个警告例如,我什么时候会根据下面的代码得到错误(它在没有警告的情况下工作,但想知道我什么时候会收到错误,以便我可以与我的代码进行比较)

mixin link(href, name)
    a(class=attributes.class, href=href)= name
    a(href=href, attributes)= name

    +link('/foo', 'foo')(class="btn")

2 个答案:

答案 0 :(得分:24)

多个"属性"并不代表你认为它意味着什么。它不是我们所知道的HTML属性,而是类型"属性"的标记。

示例:

a(href="#WAT").some-class(title="WAT")

请注意我有两个属性部分,每个部分都有一个属性。

最好将它们放在一个属性部分中:

a(href="#WAT", title="WAT").some-class

答案 1 :(得分:0)

(我发现这个问题是通过谷歌这个警告作为第一个结果之一,因为我想摆脱它......)

上面接受的答案在以下情况下对我没有帮助,但它显示了如何在不丢失属性功能的情况下摆脱警告 (它没有提供为什么以这种方式工作)的答案:

// using mixins similar to +link(param1,param2) above where 'data' and 'class' 
// below are not named mixin params

// OK (without a warning):
+link("foo", data="true")(class="bar")

// WARNING is shown:
+link("foo")(class="bar")(data="true")

// ERROR on compiling:
+link("foo", class="bar", data="true")

(很抱歉,如下面的评论中所示,会产生如此多的误解,并希望我在此处的最后一次编辑可以说明它是有效的,但对于那些docpad警告稍微更为一般,答案/帮助)