Давно хочу спросить: как, используя bem-core
и bem-components
собрать статичный html, который можно будет использовать на любой платформе. Т.е. я хочу, например, чтобы блоки page
и ua
были собраны из всех слоёв переопределения (touch
, desktop
).
Дело в том, что библиотеки не поддерживают работу этих слоёв одновременно, и более того - не собираются.
Как быть, что делать?
Мне кажется, единственный разумный подход - это вообще отказаться от деления тач/не тач. Не очень понятно, зачем это деление нужно, учитывая кучу гибридных устройств.
Для меня это означает, что на уровне проекта нужно допиливать десктопный уровень до такого состояния, чтобы он поддерживал тач-события. Это не очень сложно, если использовать полифил для pointer events.
Т.е. на уровне проекта, самостоятельно реализовывать, то что уже описано в библиотеке
bem-core
на уровнеtouch
? Очень интересно услышать варианты от @veged и @tadatuta@Guria мы постарались унести в
common
то, что нужно, чтобы блоки изdesktop
заработали на тачах. Так, например, вbem-core
туда попала реализация поинтер-ивентов. Контролы изbem-components
по задумке полноценно работают на телефонах. Если это не так, то можно заводить баги, мы будем чинить.Меня, в основном, интересовали: https://github.com/bem/bem-core/blob/v2/touch.blocks/page/page.bh.js https://github.com/bem/bem-core/blob/v2/touch.blocks/page/__icon/page__icon.bh.js Можно их копирнуть на проект, конечно. Но стоит ли? Не исключаю, что проблему я выдумал.
@Guria да, возможно, я "страшно" описал, но на самом деле "самостоятельно реализовывать, то что уже описано в библиотеке bem-core на уровне touch" не приходится, конечно же.
@Guria
page
кажется, тянет на issue для обсуждения. Заведешь?@tadatuta ОК. Готово
Можно вернуться к вопросу:
В частности,
page
иua
, можно разнести по модификаторам и устранить лишний слой вbem-core
.все гибридные устройства должны нормально работать с desktop уровнем
Разобрался с circular dependencies и предложил решение: https://github.com/bem/bem-core/issues/835#issuecomment-77110786