Войти с помощью github
Форум /

Привет!

Если вы подписаны на наши репозитории, то уже знаете, что мы определили предварительный план задач по разработке третьей версии bem-core.

Основной упор мы планируем сделать на улучшение API i-bem.js.

Как мы будем это делать?

Во-первых, планируем явно разделить i-bem и i-bem__dom на 2 разных блока-модуля. Это сделает API более аккуратным, в частности методы-хелперы будут отделены от JS-классов.

Во-вторых, собираемся на уровне ядра поддержать возможность работы с элементами блоков как с полноценными i-bem-объектами вместо того, чтобы рассматривать их в качестве jQuery-коллекций. Сейчас примерно похожая функциональность доступна отдельно в виде модификаторов elem-instances у i-bem и i-bem__dom. Это позволит избежать странной ситуации с тем, что одновременно существуют элементы как jQuery-объекты и элементы как БЭМ-инстансы, и сделать более удобное API (вместо this.setMod(this.elem('e1'), 'm1', 'v1') будет this.elem('e1').setMod('m1', 'v1')). Также это позволит избавиться от сложного полиморфизма целого ряда методов внутри ядра.

В-третьих, улучшим реализацию и внесем в ядро поддержку коллекций блоков и элементов.

В-четвертых, интеграция с модульной системой ym станет более тесной — методы поиска блоков (например, .findBlockInside('b1')) вместо строк будут принимать конкретные классы блоков (исчезнет неявная «магия» и будет меньше потенциальных ошибок).

В-пятых, подумаем, как можно унифицировать работу с событиями, особенно с live-BEM-событиями.

Кроме того, реализуем поддержку i18n в более простом виде, чем в bem-bl, обновим версию bem-xjst, что позволит не заворачивать в дополнительные гарды от зацикливания конструкции apply* в BEMHTML и BEMTREE и сделаем еще ряд более мелких изменений.

На этапе планирования разработки нам очень хотелось бы получить обратную связь, помогут ли такие изменения упростить работу с библиотекой, или же нам стоит посмотреть на что-то еще?

Поэтому если вы хотите предложить задачи для грядущей версии — создавайте нам issues, мы будем им рады!

Stay BEMed!