Jade:多个属性的新警告

Posted

技术标签:

【中文标题】Jade:多个属性的新警告【英文标题】:Jade : New warning on multiple attributes 【发布时间】:2013-10-11 15:50:58 【问题描述】:

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

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")

【问题讨论】:

【参考方案1】:

多个“属性”并不意味着您可能认为它意味着什么。它不是我们所知道的 html 属性,而是“属性”类型的标记。

例子:

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

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

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

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

【讨论】:

+1。确实,我的 mixin div(class=c)(attributes) 中有这样的代码,当更改为 div(class=c, attributes) 时,警告消失了【参考方案2】:

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

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

// 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")

(我很抱歉造成如此多的误解,如下面的 cmets 所示,并希望我在这里的最后一次编辑澄清它是一个有效的,虽然稍微更笼统的回答/帮助这些 docpad 警告) em>

【讨论】:

如果您有新问题,请使用dedicated feature。 ;) 我不想问一个非常相似的问题,因为这个问题已经提供了一个可行的解决方案。对我来说,只是有点不同。如果直接在此处搜索警告,那么创建一个新问题没有多大意义,是吗?不要太挑剔:-) 但这是一个问题,不是这个问题的答案。 等等——这个答案的目的是什么?是提供替代方法,还是询问为什么会这样? 澄清了答案中的内容,并希望它现在反映了一个合理可接受的答案

以上是关于Jade:多个属性的新警告的主要内容,如果未能解决你的问题,请参考以下文章

来自 Jade 模板的车把条件检查属性

Jade 复选框选中属性未选中基于条件(如果)

如何让 Jade 停止 HTML 编码元素属性,并生成文字字符串值?

Jade变量插值 - 如果属性未定义,则为默认值?

“警告:无法批量分配受保护的属性”

4.querystring属性