Обычно при вёрстке и программировании сайта разработчики опираются на допущение, что дизайн и технические требования к странице не изменятся в процессе разработки.
Дизайнер, верстальщик и программист каждый работает в своей области, часто не пересекаясь друг с другом:
- Дизайнер создаёт дизайн в виде набора макетов
- Из этих макетов делается статическая HTML/CSS вёрстка
- Она передаётся программисту для создания шаблонов на каком-то серверном языке и оживлении сайта с помощью JavaScript
Такой подход хорошо работает только в том случае, если дизайн сайта остаётся неизменным всё время его жизни и изменения только добавляют контент.
Но обычно так не происходит, сайт начинает жить своей жизнью и развиваться. Дизайн страниц постепенно меняется, добавляются новые страницы или новые блоки на них.
Если в код сайта не заложена определённая структура, если он делается не по фиксированным правилам, то постепенно его становится всё сложнее и сложнее разрабатывать, код сайта становится неподвластным разработчикам.
При БЭМ-подходе все люди, принимающие участие в разработке сайта, работают с единым кодом и общаются в одних и тех же терминах, на одном языке:
- Дизайн сайта может измениться в любой момент, надо быть к этому готовым
- HTML/CSS разметка развивается вместе с дизайном, готова к его изменению
- Программист вместе в верстальщиком работают над кодом сайта, дополняя код друг друга
Условия появления методологии
БЭМ-методология была разработана в Яндексе при разработке большого количества сервисов для решения следующих задач:
- Типовые проекты должны разрабатываться быстро, но жить долго
Нужно уметь за короткий срок создать проект, архитектура которого позволит без
труда поддерживать и развивать его долгие годы. - Над проектом работает много людей
Нужно уметь эффективно организовывать работу команд, как из двух разработчиков,
так и из десятков. - Масштабируемость команд
Добавление новых людей в команду должно улучшать производительность команды.
Необходима возможность быстро вводить новых разработчиков в курс дела и выделять им
собственные зоны ответственности.
Для того, чтобы с одним и тем же кодом можно было работать долгое время и разным
составом команды, код должен быть хорошо структурирован. - Повторное использование кода
Каждый новый проект или элемент интерфейса не должны писаться с нуля. Если где-то внутри
компании уже выполнялась похожая задача, нужно максимально повторно использовать
полученный в результате код. У кода не должно быть контекстной зависимости, его нужно
уметь легко переносить в другое место.
Мы искали решения возникающих перед нами проблем. Начиная с какого-то момента эти решения составили методологию БЭМ.
Читать дальше