Подтвердить что ты не робот

Jade: новое предупреждение по нескольким атрибутам

Я обновил jade до последней версии и начал видеть это сообщение в консоли

You should not have jade tags with multiple attributes

Он упоминается как функция здесь

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

Ответ 1

Несколько "атрибутов" не означает, что вы, вероятно, думаете, что это значит. Это не атрибут HTML, как мы его знаем, а токен типа "атрибут".

Пример:

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

Обратите внимание, что у меня есть два раздела атрибутов, каждый из которых имеет один атрибут.

Лучше поместите их в один раздел атрибутов:

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

Ответ 2

(Я нашел этот вопрос через googleing это предупреждение как один из первых результатов, потому что я хотел избавиться от него...)

Принятый ответ выше не помог мне в следующем случае, но он показывает, как можно избавиться от предупреждения без потери функциональности атрибутов (он не дает ответа на вопрос, почему он работает таким образом):

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