Что-то я не понял как запустить обработку bemtree, а точнее в каком месте...
Я хочу из bemjson перейти на bemtree - что для этого нужно (как и где вызывать шаблоны bemtree)?
bemtree в bemjson можно вызывать? Я так понимаю, что должно быть что-то типо этого
content: (function() { BEMTREE.apply('blockName'); } )()
https://github.com/express-bem/bemtree — попробуй ;) https://github.com/express-bem/express-bem/#usage
@zxfox а без экспресса можно? Стандартными средствами
bemtree - это когда вы создаете динамический сайт какой-то, не статический. Что такое стандартные средства? Кто вас знает, на чем вы пишете динамический сайт? Если на экспрессе - то вот, пример выше. Если на чем-то другом - посмотрите пример выше и сделайте по аналогии.
Т.е. bemtree на статическом нет смысла применять?
Я делаю прототип на bem-stub. Из него перевожу на yii (php). У меня есть блок, в котором много дочерних блоков. Чтобы не загромождать bemjson - хотел вынести в bemtree этот участок.
Видимо сделаю через отдельный блок, который будет содержать все зависимости.
Тип того. Там обычно в 99% случаев хватает js вставок в bemjson.js. Типа
fs.readFileSync('./something.js')
и['1', '2', '3'].map(function (el) { return { block : 'item', content: el }; })
Хочется наиболее простой способ, чтобы команду меньше пугать БЭМом ;)
Пока наиболее "правильным" кажется вариант указания всех зависимостей в головном блоке (пока сделал так). или создания блока-сборщика (что возможно было бы лучше)
Попробуй вот эту сборку https://github.com/tadatuta/bem-bemtree-static-project-stub . Здесь вместо
bemjson
используетсяbemtree
и в режиме дев сервера получаемhtml
@tavriaforever спасибо :) Вроде то, что нужно было
@belozyorcev а куда делся сегодняшний коммент? я его обсудить хотел.
@Guria. Да написал, поспешил... :) Дабы не было лишних "разборов полётов". Понял ошибку того способа и не захотел отнимать время у других.
При сборке bh - у нас появлялся бы лишний мусор, что есть не очень хорошо.
Я сделал по методу, который предложил @zxqfox, но только чере requier.
Создал отдельную папку (_parts) в корне (хотя лучше наверное было бы в bundels). В этой папке хранятся "большие" куски bemjson, которые повторяются на разных страницах.
Пока как-то так :smile:
Еще в клубе была тема http://clubs.ya.ru/bem/5630 (архив https://ru.bem.info/forum/issues/-632/, не очень корректно перенесли), думаю этот эксперимент в тему. Суммарно: блок https://github.com/ilyar/bem-examples/tree/master/desktop.blocks/someBlock, применение http://jsfiddle.net/ilyar/5dw8Q/ будет интересно услышать критику.
Еще интересно раскрыть вопрос применения
bemtree
в браузере, поделитесь опытом. @zxqfox действительно в 99% случаев хватает js вставок в bemjson.js?@ilyar почему в
someBlock.bemtree
все вdef
?А что хочется узнать про
bemtree
в браузере? Какого опыта не хватает?@ilyar :) для сборки статики я не вижу кейсов, где без bemtree сверстать не получится. Для динамики - по желанию.
Я сделал себе такой вариант, который собирает в клиентский js вообще весь bemhtml и bemtree. Спасибо @tadatuta за исходный репозиторий. Использовать можно следующим образом:
Сверстать то можно и данные входные преобразовать тоже. но вроде двухпроходную шаблонизацию для того и придумали, что бы данные и представление отдельно обрабатывать. Имхо для SPA bemtree - мега полезная вещь.
@zxqfox ничего не говорю про статику, я говорю о применении без nodeJs только в браузере и как отметил @Guria для SPA bemtree - мега полезная вещь. Еще можно добавить динамический слой поверх закешированной статики.
@ilyar В случае SPA я строго за bemtree на клиенте и согласен с @Guria.
@zxqfox Для статики тоже полезно, чтобы не держать в одних шаблонах и логику обработки неких исходных данных и непосредственно вёрстку. #337 яркий пример такой перегрузки.
Мне кажется в project-stub надо добавить вариант сборки html по bemjson в два прохода: bemtree + bemhtml. Опционально сборку browser.bemhtml по depsByTech.
Таким образом будет хороший пример использования двухпроходной шаблонизации. Там же можно продемонстрировать подход: блок сам ходит за нужной ему информацией.
@Guria я давно думаю про то, чтобы в project-stub собирать BEMJSON с помощью BEMTREE, но меня смущает то, что сейчас новичок может посмотреть на index.bemjson.js, плюс-минус понять за что отвечают его поля и сходу получить какой-то результат благодаря базовым шаблонам (пусть не прямо уж интуитивно понятно, но более-менее просто). А если, чтобы получить хоть что-то минимальное, потребуется сначала запихнуть в голову двухпроходность и xjst-шаблоны, это может оказаться слишком высокой планкой. С другой стороны для тех, кто уже освоился, не должно быть большой проблемой раскомментировать BEMTREE в конфиге.
Не. Я предлагаю bemjson из бандла подавать на вход bemtree:
Если шаблонов на bemtree ещё нет или никогда не будет, bemjson в неизменном (почти :) ) виде будет шаблонизирован BEMHTML.
@Guria интересная мысль. в ней смущает лишь то, что для тех, кто не пользуется bemtree, упадет скорость сборки, хотя оно им вообще не надо
Как вариант чтобы был такой вариант в закомментированном виде.
Ребята, мне кажется, project-stub все-таки должен оставаться настолько простым, насколько это возможно.) А вместо вариантов "в закомментированном виде" лучше добавлять опции в генератор бем-проектов.
Да, генератор вариант. Забыл его упомянуть.