В библиотеке bem-components есть блоки menu и menu-item, тогда как в bem.info используется блок nav. Хотел бы узнать почему в bem.info не используются блоки меню из bem-components? А также как сгенерировать блок меню с помощью технологии bemtree? В примерах есть шаблоны для bemjson и html. Также есть код deps. Почему нет кода для bemtree?
Блок menu предполагает что-то вроде контекстного меню в вертикальными пунктами и достаточно богатым JS API. Это подходит для реализации селекта, саджеста и т.п. блоков на его основе, но для обычного списка ссылок навигации по сайту гораздо проще реализовать отдельный простой блок.
Технология BEMTREE используется для генерации BEMJSON. Так что доступного на сайте BEMJSON должно быть достаточно. Например:
Приведенный вами шаблон у меня уже работает. и выводит
Когда же я пытаюсь вывести пункты меню. То в дереве блока ничего не меняется.
Предположу, что шаблон для
my-own-block
не попал в сборку. Он должен оказаться либо вindex.bemdecl.js
либо (лучше) вdeps.js
блока-родителя (родитель в свою очередь тоже должен попадать в сборку одним из этих вариантов).Проверил шаблоны по нисходящей. Поправил названия блоков. Меню заработало. Пока только не могу понять зачем в bemtree указывается уникальное название блока и имя блока menu из библиотеки компонентов?
Каким должно быть правильное название папки блока меню? menu или top-menu? Соответственно и название вложенных файлов?
На этот вопрос нет универсального ответа, зависит от конкретной задачи. Но если попробовать обобщить, то
menu
— это абстрактный универсальный блок, который может использоваться в самых разных случаях, аtop-menu
— это конкретное меню на странице. Так что в результате в папкеmenu
будет все про тот самый универсальный «строительный кирпичик», а в папкеtop-menu
окажется специфика про навигацию на странице.