Имеем такой bemjson
'footer-menu': [
{
elem: 'item',
url: 'http://df.dfd/ ',
content: 'пункт меню1'
},
{
url: 'http://df.dfd/ ',
content: 'пункт меню2'
},
{
url: 'http://df.dfd/ ',
content: 'пункт меню3'
},
]
И такой bemhtml
block('footer-menu')(
tag()('ul'),
content()(function(){
return this.ctx['footer-menu'].map(function(item){
return [
{
block: 'footer-menu',
elem: 'item',
tag: 'li',
content: {
tag: 'a',
attrs: { href: item.url},
content: item.content
}
},
''
]
})
})
);
И такой deps.js
({
mustDeps: [
{ block: 'footer-menu', elem:' item' }
]
})
Почему не подключаются стили элемента блока? Если я явно его укажу в bemjson то конечно все ок. Насколько я понимаю именно deps.js и должен был добавить зависимость и элемент в процессе сборки прилетел бы в css
Код будет проще читать, если его обернуть в блок из трёх бэктиков
deps.js в папке бандла строится автоматически из блоков использованных в bemjson и ?.deps.js блоков участвующих в сборке. Если вы используете блок page, например, создайте папку blocks/page в вашем бандле и разместите в ней файл page.deps.js:
Спасибо за ссылку на style кода, буду использовать, Т.е такого рода зависимости надо ставить на страницу?, а не на блок? Я как раз думал в том и прелесть, что если я отключу блок то зависимости не попадут в сборку, если они более не где не используются..
Вы совершенно правы. Зависимости рулятся именно так. Мне просто сложно предположить к какому именно блоку вы предполагаете добавлять зависимость.
После стилизации кода стало понятнее. Создавайте footer-menu.deps.js в папке блока footer-menu
Так я его и создал и приложил, а стили не подгрузились. По сути у block: 'footer-menu' зависимость от его elem:' item'
@AndreyGladkov Безотносительно сути вопроса я бы предложил вообще всю эту историю выразить прямо в BEMJSON (это обычный JS, так что
map()
можно написать прямо в нем, а все зависимости тогда построятся автоматически).Ну а если по сути, то скорее всего где-то закралась опечатки — в именах файлов, где-то в названиях блоков в коде или еще где-нибудь. Если есть возможность опубликовать код на github, я могу помочь найти.
PS: вместо введение кастомного поля
footer-menu
, можно класть айтемы прямо в контент в BEMJSON, а в шаблонах зватьapplyNext()
:@eGavr как там bem lint поживает, кстати?