Господа фронтендеры, используете БЭМ в связке с CSS Modules?



С одной стороны, одной из решаемых БЭМ проблем была изоляция имён CSS-классов во избежание коллизий; и CSS Modules решает эту проблему по умолчанию, т. к. классы каждого компонента изолированы. В таком контексте БЭМ не нужен, если используешь CSS Modules.



К тому же блок в терминологии БЭМ это как правило и есть компонент, а всё, что внутри компонента это как правило элементы с редкими модификаторами. В итоге это приводит к тому, что просто все CSS-классы компонента начинаются с имени этого компонента, что кажется избыточным. Мы и так находимся в отдельном CSS этого компонента, нет смысла каждый его класс начинать с имени компонента, это едва ли положительно сказывается на читаемости CSS.



С другой стороны, в каких-это сценариях БЭМ и в связке с CSS Modules улучшает читаемость и структурированность кода. Модификаторы, например, в этом помогают. Или использование блока как элемента, когда блок=компонент переиспользуется в другом блоке=компоненте и ему задаются отступы и положение на странице как элементу. Улучшает читаемость, думаю.



Отказаться от Б в БЭМ?



А styled components (css in js) мне чёт не нравится. Давайте сюда ещё PHP добавим с SQL, чего по файлам прыгать:)



#IT #frontend #javascript #typescript #css