Здравствуйте. Начал знакомство с БЭМ-инструментами, до этого использовал только методологию наименования классов. На данный момент хочу использовать бэм-инструменты для верстки однотипных шаблонов. Но у меня возникли проблемы с добавлением новых своих сущностей (а не блоков яндекса из bem-core и bem-components) в common.blocks, внятной документации не нашел. Использую enb-bem + bwmsjon + bemhtml. Также хотелось бы узнать, как отключить минификацию файлов html при сборке. Сейчас весь html склеивается в одну строку, а хотелось бы получать файл, пригодный для дальнейшей интеграции на cms.
HTML не минифицируется, он сразу такой собирается из bemjson. Для ваших целей его надо прогонять через html beutifier. А на счёт вашей проблемой с блоками не ясно в чём именно у вас загвоздка. По возможности опишите что вы делали подробнее.
Мне не совсем понятна логика добавления своих сущностей. Например, я создал папку test-block в common.blocks, в нее положил test-block.bemjson.js, в котором указано: ({ block: 'test-block', content: [ 'test-block test' ] });
В desktop.bundles в index.bemjson.js я указываю:
({ block: 'page', title: 'Hello, World!', content: [ block: 'test-block' ] });
При этом, содержимое блока test-block не выводится. Возможно я что-то не так понял.
bemjson
не предназначен для описания блоков. Блоки описываются шаблонизаторамиbemhtml
илиbh
. Начните с изучения соответствующего раздела:desktop.bundles/about
и внутри папки создаешь файл about.bemjson.js - в этом файле описываешь структуру БЭМ дерева в формате bemjson, например https://github.com/tavriaforever/project-stub/blob/bem-core/desktop.bundles/index/index.bemjson.js, которая на выходе превратится в html.desktop.blocks/header
внутри создаешь файл header.bemhtml и пишешь туда например:На выходе получаешь в html тег header
и все, а всю внутрянку блока спрятать в реиспользуемый bemhtml шаблон, например
На выходе ты получаешь блок
header
, который написан один раз, но на разных страницах можно получать кусок html с разным контентом.