Задать вопрос

Как создать в bem: в блоке блок?

Пишу в консоли:
bem create -l desktop.blocks/ -b block1 -T css
Далее, хочу в этом блоке, создать еще 1 блок:
bem create -l desktop.blocks/block1 -b block2 -T css

На что bem мне отвечает:
warn: Level at desktop.blocks/test1 does not contain .bem subdirectory
Так вот, как создать в блоке блок, с правильным уровнем и директорией .bem?

Вот пример, того как будет это выглядеть в json:
block: 'block1',
content: {
    block: 'block2',
    content: [
        { ...
  • Вопрос задан
  • 3346 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@ilyarsoftware
Для того что бы создавать файлы блоков в desktop.blocks/block1 командой:

bem create -l desktop.blocks/block1 -b block2 -T css


Надо создать файл описания уровня desktop.blocks/block1/.bem/level.js с содержанием:

exports.baseLevelPath = require.resolve('../../../.bem/levels/blocks.js');


В результате для bem-tools папка block1 будет не просто папкой блока, а еще уровнем переопределения подобно desktop.blocks. Если это может показаться удобным, посмотри тему Группировка блоков внутри уровня переопределения.

Для полноты ответа, важно отметить, для того использовать приведенный bemjson, достаточно создать блок block2 командой:

bem create -l desktop.blocks/ -b block2 -T css

Блоки это самостоятельные компоненты которые не должны знать о том куда они могут быть вложены (конечно могут быть исключения). Они создаются на уровне переопределения без иерархии, а вложенность описывается в bemjson.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sosnovskyas
@sosnovskyas
Вся идея BEM, в моём личном понимании, заключается именно в концепции независимых блоков, и поэтому то что ты хотел сделать вроде бы получается не правильно. Вернее будет сделать так
bem create -l desktop.blocks -b block2
После можно будет добавлять нужные технологии с ключом -T, а как я помню именно он используется для тех случаев если блок уже существует и требуется доопределить или переопределить блок на каком то уровне технологий. После этого ты сможешь использовать его многократно в любом блоке на любом уровне вложенности, неазвисимо от остальных совершенно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы