Изучаю сейчас созданием первого проекта используя BEM и projectstub https://ru.bem.info/platform/tutorials/start-with-project-stub/
И там есть вот такой код
elem: 'price',
content: {
block: 'link',
mix: [{ block: 'goods', elem: 'link' }],
url: item.url,
content: item.price
}
С подписью
Шаблон может создавать не только HTML-элементы блока, но и другие блоки. Например, цену товара можно сделать ссылкой, используя для этого блок link из библиотеки bem-components.
Чтобы избежать вложенных селекторов при оформлении этой ссылки стилями, пометим её как элемент блока goods.
Почему мы делаем это именно в BEMHTML ? А не стандартным способ через созданием папки и объявлением блока в BEMJSON? А через BEMHTML поменять ему тег и добавить ссылку.
В данном случае это сделано лишь для того, чтобы привести пример.
А разумным примером, когда нужно внутри шаблона спрятать какие-то другие блоки, может служить, скажем, блок
select
, который под капотом состоит изbutton
,popup
иmenu
, при этом от пользователя знать эти подробности не требуется, в BEMJSON он опишет лишь самselect
, остальное сделают шаблоны.То есть если мне нужен просто блок header, в котором есть уже блоки лого и тайтел. И мне нужно чтобы они приезжали вместе с header при каждом его объявлении в BEMJSON.
То эти блоки я должен объявить в BEMHTML ?
Да, но так стоит делать только обладая 100% уверенностью, что
header
всегда будет именно такой и завтра не захочется прокинуть внутрь другой заголовок, навесить каких-нибудь условий на логотип и так далее.Ну т.е. нужно не переборщить с шаблонами ;)