Большая статья о том, что такое БЭМ. С картинками.Отныне изучение БЭМ рекомендуется начинать с прочтения этой статьи.
Наконец-то я смогу объяснить маме, чем тут занимаюсь!
наконец-то написали внятное описание. до этого делал попыток 4-5 понять что такое бем
Примерно понял как этим пользоваться для верстки "макетов" - статический страниц, но как это можно использваться для страниц с серверной логикой? с тем же asp.net mvc например.
Примеров такого кода у нас нет, есть методология, которую теоретически можно применить к любой технологии. Примеров про ASP.net от нас в любом случае не появится, мы не пользуемся этой технологией. Вся надежда на пользователей, которые сами применят методологию к нужной им технологии.
А чем вы собираете JS файлы? Есть ли валидация CSS для определённого браузера? Есть проверка на наличие уникального имени блока, элемента? Возможно ли автоматическое создание патчей различий для запуска на горячий сервер?
Я правильно понял: Напрямую с HTML вы не работаете, вся процедура сборки HTML автоматизирована и производится исходя из БЭМ-дерева. Вопрос: как происходит добавление содержимого страницы (например текста статьи, логина пользователя, количество комментарий etc), как динамической, так и статической?
Спасибо за статью (качественно, без воды, с милой иллюстрацией), многое стало понятно, до этого не мог представить, откуда начать изучение БЭМ.
Файлы собираются при помощи технологии js в bem-tools. Как альтеративу можно использовать borschik.
Мы делаем файлы для IE отдельно, для этого у каждого блока описываются дополнительные стили для IE в файле .ie.css. К странице при помощи условных комментариев подключается файл, собранный для IE.
Для автоматического разделения CSS-кода на кусочки для разных браузеров, есть Сеточка. Но это прототип.
Сервер отдаёт bemjson (JSON-описание страницы в отпередённом формате. На него, на сервере же, накладывается bemhtml.js — это большая нечитаемая JavaSript-функция. Ей на вход подают bemjson, она исполняется через интерпретатор на сервере (например NodeJS), а в какчестве результата выдаёт HTML, который и является ответом сервера.
Динамически всё то же самое, только интерпретатор на клиенте, в браузере. Потом innerHTML получившегося кусочка. Ну, на самом деле не innerHTML, а специальный клиентский js-хелпер, но суть та же.
Кажется {tag: 'meta', attrs: { 'http-equiv': 'X-UA-Compatible', content: 'IE=EmulateIE7, IE=edge' }} в b-page.bemhtml