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