Open belozer opened 8 years ago
@belozyorcev Скажи, а почему не удалось использовать i-bem
? Какие изменения со стороны i-bem
позволили бы его использовать?
"Не удалось" - это громко сказано :) i-bem прекрасен. Но его нужно было "собирать" для внедрения в проект.
Времени было мало и мне не хотелось разбираться со всеми зависимостями при сборке (использую свой сборщик, не enb).
Вдобавок ко всему в i-bem меня постоянно смущала jQuery. Я не мог понять, то над чем я провожу манипуляции является jQuery или i-bem.
В данном решении решил сделать некий делитель $, который явно разграничивает зоны ответственности. Как мне кажется, таким образом удалось решить мою проблему. [методы BEMby] .$.[методы jQuery].
Как-то так поделка BEMby и получилась.
Просто для истории:
Времени было мало и мне не хотелось разбираться со всеми зависимостями при сборке (использую свой сборщик, не enb).
Есть готовый предсобранный бандл bem-core, который можно поставить через bower
или подключить напрямую с CDN (как и bem-components).
А благодаря использованию ymodules порядок конкатенации файлов практически не важен, поэтому JS на i-bem должно быть достаточно просто собирать любым сборщиком.
Вдобавок ко всему в i-bem меня постоянно смущала jQuery. Я не мог понять, то над чем я провожу манипуляции является jQuery или i-bem.
Там все просто: если речь о блоке, то это i-bem, доступ к jQuery происходит через поле domElem
, а элементы всегда представлены jQuery
-коллекциями.
@tadatuta ты меня раскусил :) Я просто очень жду bem-core v3, понравилось API.
Для работы было необходимо работать с методологией, но использовать i-bem не представлялось возможным, а костыли на jQuery было муторно и уже невозможно писать из-за громозкости. Использовать плагины для БЭМ к jQuery тоже было не самым радужным решением.
Решил сделать своё решение, с заимствованием API i-bem, но с небольшими изменениями.
Краткое описание API
.elem() - доступ к элементу .elem().elem() - доступ к элементу в элементе .setMod() - установка модификатора .delMod() - удаление модификатора .on() - надстройка над jQuery.on(). (но возможно будет заменён на bindTo) .$ - переход в режим jQuery.
репозиторий проекта