Читаю документацию по шаблонизатору, застопорился на первом примере.
Пример. Подпредикат блока link:
block('link')
Входные данные:
[
// на этот блок предикат вернет `true` и шаблон будет применён
{ block: 'link' },
// на все следующие сущности предикат вернет `false` и шаблон не будет применён
{ block: 'para' },
'link',
{ block: 'link', elem: 'text' }
]
Конкретного описания к подпридекату block не добавлено, но выше говорится:
Для каждого узла входного дерева шаблонизатор проверяет условия, указанные в шаблонах. Эти условия называются подпредикатами и составляют предикат шаблона. Условия могут быть простыми — проверка имени блока/элемента или более сложными и составными — проверка значений произвольных полей в текущем узле BEMJSON.
Исходя из этого и комментариев в примере я понял, что в выводе должен быть только блок link, но этого не происходит ни в одной из версий шаблонизатора, предложенных в песочнице.
Вопрос: где я ошибся?
Не совсем понятно что вы планируете в итоге получить. Какой в итоге код html должен получиться? работа с вашим кодом
@DjonyBastone спасибо за ответ. Я ожидал получить, только одну строку '
' - блок link, т.к. предполагал что предикат(и подпридекаты) являются "фильтрами" входных данных, такое представления сложилось из документации.Это было заблуждением. Подпридекат - это селектор, по аналогии с CSS. Они используются для конкретизации с каким узлом(входных данных), что делать - тело шаблона. Я правильно понял?
если говорить о движке
bemhtml
- да, верно!bemhtml
навешивает на сущность ожидаемое дополнение - тег, атрибуты, контент и т.д. Как на раму автомобиля устанавливаются все детали - двигатель обшивка, подвеска и т.д. А вbemjson
илиbemtree
указывается сама сущность - блок, элемент, контент...В
bemjson
- можно и безbemhtml
- тюнинговать. Так как принимает дополнения после указания блока или элемента. Такой подход оправдан для одноразового использования сущности, или прокидывания параметров дочерним элементам. Хороший пример блокbutton
вbem-components
В
bemtree
- немного иначе. По моим ощущениям - для формирования скелета страницы (рыба). То есть указать какие блоки/элементы есть и что в них содержится. Из названия понятно, для формирования БЭМ-дерева.Спасибо!