Альтернативные схемы именования
Существуют альтернативные решения, основанные на соглашении по именованию БЭМ.
Стиль Two Dashes
block-name__elem-name--mod-name
- Имена записываются в нижнем регистре.
- Для разделения слов в именах БЭМ-сущностей используется дефис (-).
- Имя элемента отделяется от имени блока с помощью двух подчеркиваний (__).
- Булевые модификаторы отделяются с помощью двух дефисов (--).
- Модификаторы вида «ключ-значение» не используются.
Важно! Двойной дефис внутри комментария (--) воспринимается как часть комментария и соответственно его наличие приводит к ошибке при валидации документа.
Стиль CamelCase
MyBlock__SomeElem_modName_modVal
Данный стиль отличается от классического CamelCase использованием дополнительных подчеркиваний для разделения имен БЭМ-сущностей.
Стиль без подчеркиваний
blockName-elemName--modName--modVal
- Для записи имен используется CamelCase.
- Имя элемента отделяется от имени блока с помощью одного дефиса (-).
- Для отделения модификатора используется два дефиса (--).
- Значение модификатора отделяется от его имени с помощью двух дефисов (--).
Важно! Двойной дефис внутри комментария (--) воспринимается как часть комментария и соответственно его наличие приводит к ошибке при валидации документа.
Стиль No-namespace
_available
Основное отличие данного стиля в отсутствии имени блока и/или элемента перед модификатором. Такая схема накладывает ограничения на использование миксов, так как не дает возможности определить, к какому блоку/элементу относится модификатор.
Какой стиль выбрать
Методология БЭМ предлагает общие принципы именования БЭМ-сущностей. Выбор схемы именования зависит от требований вашего проекта и личных предпочтений. Использование предложенного методологией соглашения по именованию имеет один существенный плюс — наличие готовых инструментов для разработки, которые ориентируются именно на «классическое именование».
Помимо этого, БЭМ-методология не ограничивается использованием технологий HTML и CSS, рассмотренных в этом документе. Понятия блоков, элементов и модификаторов применяются при работе с JavaScript, шаблонами и файловой структурой БЭМ-проекта. Инструмент bem-naming позволяет применять одинаковые имена БЭМ-сущностей во всех используемых технологиях реализации.
По умолчанию bem-naming
содержит настройки соглашения по именованию, предложенного методологией, но позволяет добавлять правила для использования альтернативных схем.