bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

BEMby маленькая альтернатива i-bem #753

Open belozer opened 8 years ago

belozer commented 8 years ago

Для работы было необходимо работать с методологией, но использовать i-bem не представлялось возможным, а костыли на jQuery было муторно и уже невозможно писать из-за громозкости. Использовать плагины для БЭМ к jQuery тоже было не самым радужным решением.

Решил сделать своё решение, с заимствованием API i-bem, но с небольшими изменениями.

Краткое описание API

.elem() - доступ к элементу .elem().elem() - доступ к элементу в элементе .setMod() - установка модификатора .delMod() - удаление модификатора .on() - надстройка над jQuery.on(). (но возможно будет заменён на bindTo) .$ - переход в режим jQuery.

репозиторий проекта

tadatuta commented 8 years ago

@belozyorcev Скажи, а почему не удалось использовать i-bem? Какие изменения со стороны i-bem позволили бы его использовать?

belozer commented 8 years ago

"Не удалось" - это громко сказано :) i-bem прекрасен. Но его нужно было "собирать" для внедрения в проект.

Времени было мало и мне не хотелось разбираться со всеми зависимостями при сборке (использую свой сборщик, не enb).

Вдобавок ко всему в i-bem меня постоянно смущала jQuery. Я не мог понять, то над чем я провожу манипуляции является jQuery или i-bem.

В данном решении решил сделать некий делитель $, который явно разграничивает зоны ответственности. Как мне кажется, таким образом удалось решить мою проблему. [методы BEMby] .$.[методы jQuery].

Как-то так поделка BEMby и получилась.

tadatuta commented 8 years ago

Просто для истории:

Времени было мало и мне не хотелось разбираться со всеми зависимостями при сборке (использую свой сборщик, не enb).

Есть готовый предсобранный бандл bem-core, который можно поставить через bower или подключить напрямую с CDN (как и bem-components).

А благодаря использованию ymodules порядок конкатенации файлов практически не важен, поэтому JS на i-bem должно быть достаточно просто собирать любым сборщиком.

Вдобавок ко всему в i-bem меня постоянно смущала jQuery. Я не мог понять, то над чем я провожу манипуляции является jQuery или i-bem.

Там все просто: если речь о блоке, то это i-bem, доступ к jQuery происходит через поле domElem, а элементы всегда представлены jQuery-коллекциями.

belozer commented 8 years ago

@tadatuta ты меня раскусил :) Я просто очень жду bem-core v3, понравилось API.