В чем разница между использованием BEM и Scoped-стилей?
Основы CSS
БЭМ решает конфликт имён соглашением об именовании классов, scoped-стили — автоматически, на этапе сборки.
БЭМ
.card {}
.card__title {}
.card--featured {}- Работает в любом проекте, не требует сборки.
- Зависит от дисциплины команды: ошибка в имени — и стили пересекаются.
- Длинные имена классов.
Scoped-стили (Vue scoped, CSS Modules)
<style scoped>
.title { color: red; }
</style>- Сборщик добавляет уникальный атрибут или хеш — стили не выходят за компонент.
- Короткие имена, меньше договорённостей.
- Сложнее стилизовать дочерние компоненты (нужен
:deep()), привязка к инструменту.
Как выбирать
В компонентных фреймворках обычно хватает scoped или CSS Modules. БЭМ полезен для глобальных стилей, библиотек и вёрстки без сборки. Подходы можно сочетать.
Коротко для собеседования
БЭМ изолирует стили договорённостью об именах, scoped-стили — автоматически через сборку; второй проще, первый не зависит от инструментов.
Подробнее: БЭМ — Методология