Отделение модификатора по БЭМ: нижнее подчеркивание или два дефиса?

Здравствуйте.
В официальной документации БЭМ указано, что модификатор следует отделять нижним подчеркиванием
block_modificator

5d16069ee192c687305716.png

Но часто встречаю отделение двумя дефисами.
block--modificator
И визуально этот способ мне кажется более удобочитаемым.
Есть соблазн перейти на такое обозначение.

Помогите пожалуйста понять:
1) Почему даже "видные" разработчики, получается, не следуют документации, отделяя модификатор двумя дефисами?
2) Допускается ли использовать "--" вместо "_"?

Спасибо
  • Вопрос задан
  • 1264 просмотра
Решения вопроса 2
KornevaViktoria
@KornevaViktoria
Frontend Developer
Стоит прочитать"Альтернативные схемы именования"

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

Часто редакторы кода настроены на стандартную схему именования, поэтому кому-то удобнее использовать ее. Но все можно отредактировать, если захотеть.
Ответ написан
Realetive
@Realetive
MODX Ambassador России, самозванный БЭМ-евангелист
1) Даже «видные» разработчики не всегда в состоянии дочитать документацию до конца (собственно, это и является причиной появления других «адаптаций» БЭМ). Основная причина использование подчёркиваний — не «ругается» редактор, который воспринимает два дефиса подряд как ошибочный HTML-комментарий. А «благодорить» за это нужно, наверное, Гарри Робертса, который тоже «ниасилил» официальную документацию, бросил где-то на середине и остальное, видимо, домыслил, популяризовав абсолютно бесполезную адаптацию (например, он так и не узнал, что модификаторы записываются в формате «ключ-значение»), не имеющего ничего общего с БЭМ (но активно использующую официальную терминологию).
2) Разделитель может быть любым. Желательно просто, чтобы он был явным и не допускал разночтения и ошибочных толкований. Но, как я уже написал выше, два дефиса могут неправильно выделяться в HTML-редакторе и непонятно, чем разделять значение модификатора в формате «ключ-значение».

P. S.: БЭМ-разработчики вообще вручную не пишут эти разделители, используя вместо это декларации БЭМ-сущностей (блоков, элементов и их модификаторов) — разделители подставляются автоматически при сборке и их в любой момент можно переопределить (заменить подчёркивание на дефис) и пересобрать заново (псевдокод):

// Default
block('my-block').elem('my-elem'); // => `my-block__my-elem`

// React-style
block('my-block').elem('my-elem'); // => `MyBlock-MyElem`
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы