Когда какую технологию использовать, почему для bemhtml необходимо писать deps.js, зачем вообще bemhtml, когда есть bemtree?
Насколько я понял, bemtree по синтаксису больше похож на bemhtml и создан специально для того, чтобы генерировать bemjson. Когда пишешь много bemjson, очень скоро хочется писать меньше bemjson. Я почти сразу стал генерировать bemjson через bemhtml, что в принципе неверно. Поэтому посоны придумали bemtree. Я могу ошибаться, bemtree еще плотно не курил.
Если коротко, то потому что так bemhtml быстрее работает и так написано в доке.
Пример кода, который это иллюстрирует:
Подробнее см. http://ru.bem.info/articles/deps-js-syntax/
Я думал вопрос в том, почему зависимости автоматически не подхватываются из bemhtml. И решил сделано так в угоду скорости .
1. страничный bemhtml — это результат сборки и компиляции блочных bemhtml-файлов. а чтобы их собрать, мы должны заранее знать, какие сущности нам нужны.
2. в bemhtml можно писать произвольный код на js, например:
block bla, this.ctx.someFlag, content: {
var a = 'b',
b = '-',
c = ['l', 'o', 'k'],
d = [];
for (var i = 0; i < 10; i++) {
d.push({ block: a + b + c.join(''), mods: { pos: i }});
}
return d;
}
чтобы из этого кода понять, что нам нужны зависимости вида { block: 'block', mods: { pos: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] } } нужно заранее каким-то образом собрать этот bemhtml и выполнить его, предварительно положив в контекст someFlag = true.
Точно, об этом уже не раз говорили, я забыл. Спасибо за разъяснения.