Open iatsdotfatr opened 3 years ago
Но ведь БЭМ методология не определяет конкретного наличия той или иной технологии для реализации блока. Это я к тому, что сам шаблон бэм-блока не обязательно должен присутствовать в его директории (если только для удобства?). А что, если блок состоит только из scss (например, clearfix или visuallyhidden). Я исправил.
Если шаблон есть, то должен присутствовать. Если блок состоит только из scss тоже нормально, если не использовать шаблонизаторов, то есть делать разметку на чистом html, шаблонов вообще не будет :). БЭМ-миксы в целом, и классы с общими стилями в частности, не надо использовать (то есть не надо добавлять к одному html-элементу больше одного класса--бэм-блока), что-то подобное clearfix можно сделать scss-миксином, вместо общего visuallyhidden использовать модификаторы (их тоже можно сделать миксином).
Подобное разделение имеет смысл использовать только при работе с css, в случае с препроцессорами, файл со стилями должен быть один, в котором на верхнем уровне находится только правило блока, остальные правила вкладываются с помощью "&" внутрь в порядке их расположения в разметке, то же касается медиазапросов, например:
Хорошо, тогда, если для кастомизации компонентов использовать только миксины, разве это не приводит к очень большому дублированию стилей и раздуванию кодовой базы? Например, для компонентов input-date и input-list стили для элементов input и button одинаковы, но мы вынуждены их всё равно разделять разными классами дабы сохранить специфичность компонентов.
Но компонент может по прежнему остаться независимым, если использовать подблоки. Сами классы input и button содержат только общие стили (присущие всем таким элементами), а расширяются уже модификаторами.
Чем плох именно второй вариант?
Ещё возникли такие вопросы:
Исправил.
Не уверен, что понял по поводу инпутов, но если какие-то элементы повторяются в разных местах, то, скорее всего, из них надо сделать отдельные бэм-блоки, тогда и стили для них будут описаны в одном месте.
В modules стилизуются основные страницы, а в templates страницы ui-kit.
А они точно дожны находиться в scss?
Наверное, зависит от того для чего делаются страницы uikit, как и кем они будут использоваться. А это был риторический вопрос. да?
Ага, в scss должно находиться то, что относится только к scss.
Готово. Теперь компоненты находятся в папке components
. В папке scss лежат только стили: normalize, fonts, mixins и variables
. Для каждой точки входа (страницы) свой js-файл, где подключаются компоненты, которые используются на этой странице.
У каждого компонента (бэм-блока) должна быть своя директория, в которой находятся: