На YaC2011 был мастер-класс «Тема для Wordpress на БЭМ» clubs.ya.ru/bem/replies.xml?item_no=1151 Там как раз про PHP. Только это контент годовой давности, сейчас уже не нужно 100500 комманд для сборки в консоли писать, потому что есть bem server. Но по видео можно принцип понять.
«Сперва верстать» — это лишь вопрос привычки. Я бы даже такую страницу верстала, а потом переносила в шаблоны оооочень долго. А на bemjson+bemhtml бац-бац и всё готово. И сразу можно блоки реиспользовать и проект делить, как угодно. Например, блок «box» сначала в проекте был, и только при подготовке статьи я его в отдельную библиотеку выделила простым копированием.
Можете почитать ответы на комменты в Smashing Magazine coding.smashingmagazine.com/2012/04/16/a-new-front-end-methodology-bem/ Тема больно новая, поэтому там много вопросов. Но ответы все есть.
Также, видео, на которое я вначале давала ссылку, мне кажется, хорошо всё объясняет ( vimeo.com/53219242 ). Там по-английски, но зато это самый свежий контент.
А ещё есть доклад Виталия Харисова «История создания БЭМ» ( events.yandex.ru/talks/137/ ), на русском. Там как раз шаг ша загом про то, какие были проблемы в разработке, как их решали, добавляя в систему «правила», и как в итоге получился БЭМ.
У команды БЭМ есть практика выездных приватных семинаров. Разработчики составляют свои вопросы, а мы, подготовившись, приходим на чай с плюшками. Так общение получается более продуктивным, вопросы рассматриваем с учётом архитектуры ваших проектов. Можем к вам придти :-)
Я не к тому, чтобы вы всё взяли и переделали, а просто если есть предположение, что «не умеем готовить» и просто любопытно, как это сделали бы мы, то мы всегда готовы поделиться.
Возможность есть. Но измерения показали, что после гзипования разницы между двумя документами с длинными классами и короткими нет. Поэтому мы отказались от идеи такой конвертации.
Если вы говорите о том, какие классы используют в Яндексе, то это не так: схема именования элемента не зависит от его вложенности в другие элементы.
Если вы говорите о БЭМ в целом, то это тоже не верно. БЭМ как методология не регламентирует именование классов, оставляя это за конкретной реализацией.
Да, как минимум причина «в IDE не видно по названию файла, к какому блоку относится модификатор» была бы неизменна. С точки зрения технологи — как только дошли до модификации JS, уже возникли бы проблемы, решение которых подвело бы к тому, что мы имеем сейчас.
Или вот возможность выносить элемент за пределы блока в DOM-структуре тоже «концептулаьно» появилась не сразу. А она нужна, например чтобы для b-form-checkbox (как-нибудь зарелизим) размещать b-form-checkbox__label где угодно.
Злесь речь идёт о JavaScript-bаsed шаблонизаторе, который мы разрабатываем и используем. В качестве входных данных используется JSON. Преобразования могут происходить везде, где есть JavaScript-интерпретатор: то есть и на сервере, и на клиенте. По сравнению с XSL производительность выше в 10 раз, по сравнению с TT2 — в 3 раза.
Более подробную информацию можно получить из выступления Сергея Бережного (veged) на YAC2011. Так же есть питерское выступление с таким же контентом, но другими вопросами из зала.
В основе лежит шаблонизатор XJST, он разрабатывается Open Source, вот репозиторий на GitHub.
Для работы непосредственно с блоками, есть «обёртка», дополнительный синтаксис, который называется BEMHTML. Непосредственно о синтаксисе можно узнать из поста про синтаксис BEMHTML. Конкретные блоки, разрабатываемые с применением этого шаблонизатора в Open Soruce — это библиотека блоков bem-bl (репозиторий на GitHub, разрабатываемый сайт). Описания реализации блоков публикуются в клубе на Я.ру (поиск по тегу bemhtml), так можно познать особенности.
Блок — это не обязательно DOM-элементы. Могут быть абстрактные блоки, не представленные в DOM. Об этом в статье не написано, т.к. слишком сложно. Но и проводить параллель DOM-элемент — блок не нужно.
Компиляция web-проектов — это всё-таки не про шаблоны.
Под компиляцией подразумеваются какие-то действия, которые превращают «код для людей» в «код для роботов». Компиляция может быть применима и к шаблонам, и к статике. Сам факт наложения шаблонов на исходные данные компиляцией не является, тк это не пре-подготовка, на runtime.
Также, видео, на которое я вначале давала ссылку, мне кажется, хорошо всё объясняет ( vimeo.com/53219242 ). Там по-английски, но зато это самый свежий контент.
А ещё есть доклад Виталия Харисова «История создания БЭМ» ( events.yandex.ru/talks/137/ ), на русском. Там как раз шаг ша загом про то, какие были проблемы в разработке, как их решали, добавляя в систему «правила», и как в итоге получился БЭМ.
Но несмотря на на такое откровенное мизерное количество информации, есть проекты, использующие БЭМ.
Навскидку — SoundCloud soundcloud.com, intuit.css inuitcss.com. Про последний есть даже статья с объяснениями webdesign.tutsplus.com/tutorials/htmlcss-tutorials/rubbing-noses-with-inuit-css/
HTML код переделаю на текст, размещать его картинками было не лучшим решением.
Я не к тому, чтобы вы всё взяли и переделали, а просто если есть предположение, что «не умеем готовить» и просто любопытно, как это сделали бы мы, то мы всегда готовы поделиться.
Если вы говорите о БЭМ в целом, то это тоже не верно. БЭМ как методология не регламентирует именование классов, оставляя это за конкретной реализацией.
Или вот возможность выносить элемент за пределы блока в DOM-структуре тоже «концептулаьно» появилась не сразу. А она нужна, например чтобы для b-form-checkbox (как-нибудь зарелизим) размещать b-form-checkbox__label где угодно.
<div class="b-block1 b-block1_mod_val b-block2 b-block2_mod_val"
Кроме того, из JS находить b-block1_mod_val быстрее, чем b-block1.mod_val
Более подробную информацию можно получить из выступления Сергея Бережного (veged) на YAC2011. Так же есть питерское выступление с таким же контентом, но другими вопросами из зала.
В основе лежит шаблонизатор XJST, он разрабатывается Open Source, вот репозиторий на GitHub.
Для работы непосредственно с блоками, есть «обёртка», дополнительный синтаксис, который называется BEMHTML. Непосредственно о синтаксисе можно узнать из поста про синтаксис BEMHTML. Конкретные блоки, разрабатываемые с применением этого шаблонизатора в Open Soruce — это библиотека блоков bem-bl (репозиторий на GitHub, разрабатываемый сайт). Описания реализации блоков публикуются в клубе на Я.ру (поиск по тегу bemhtml), так можно познать особенности.
Пользователи писали, что им ничего не понятно.
Блок — это не обязательно DOM-элементы. Могут быть абстрактные блоки, не представленные в DOM. Об этом в статье не написано, т.к. слишком сложно. Но и проводить параллель DOM-элемент — блок не нужно.
Компиляция web-проектов — это всё-таки не про шаблоны.
Под компиляцией подразумеваются какие-то действия, которые превращают «код для людей» в «код для роботов». Компиляция может быть применима и к шаблонам, и к статике. Сам факт наложения шаблонов на исходные данные компиляцией не является, тк это не пре-подготовка, на runtime.