Спасибо форуму, сборка происходит нормально. Но результатов BEMHTML на клиенте пока нет.
В JavaScript код такой:
var reposBEMJSON = this.repos.map(function(repo) {
return {
block: 'test',
//elem: 'repo',
content: '1111',
info: {
name: repo.name,
url: repo.html_url
}
}
});
var html = BEMHTML.apply(reposBEMJSON)
console.log(html);
Зависимости по технологиям указываю: https://github.com/varya/varya.github.com/blob/features/github-repos/desktop.blocks/github/github.deps.js#L12
Судя по коду index.min.js шаблон всё-таки включен в сборку:
if(!__$ctx.elem&&__$ctx.block==="test"&&__$ctx._mode==="content"){__$ctx.__$a=0;return"XXXX"}
Но в консоль выводится undefined
. В браузер приезжает свежий, незакешированной index.min.js
— я проверила.
В чём может быть проблема и как дебажить дальше?
@varya не хватает зависимости от блока
i-bem
в технологииbemhtml
Хм, не очень понятно.
Я добавила зависимость к блоку
test
:Но это не помогло. Помогла только зависимость для блока
github
(для которого и пишу JavaScript):Как-то нелогично. Почему первый вариант не подходит?
А можно ещё раз, что от чего должно зависеть? Я указала i-bem https://github.com/varya/varya.github.com/blob/features/github-repos/desktop.blocks/github/github.deps.js#L12 Теперь я получаю не
undefined
, но всё равно результат дефолтных шаблонов:А хочу, чтобы применился шаблон на блок test: https://github.com/varya/varya.github.com/blob/features/github-repos/desktop.blocks/test/test.bemhtml
@varya прислал PR: https://github.com/varya/varya.github.com/pull/63/files с пояснениями по диффу
Спасибо, всё заработало! А дальше уже переделать на зависимость от собственного элемента оказалось несложно https://github.com/varya/varya.github.com/commit/410b359d0dc7f9abc8bbe321439a304651a9d2bd
Но дальше всё равно не понятно :-)
Теперь я хочу использовать в своём шаблоне блок link. Почему вот такой зависимости недостаточно ("ссылка" строится по дефолтным шаблонам): https://github.com/varya/varya.github.com/commit/bc4f0ef1fb2eae62b57f1c2d6f81fd713bb42dd6
потому что никто не зовет шаблон ссылки в клиентские шаблоны. должно быть:
А почему?? Ведь блок
github
независим, он должен строиться по-полному, и без разницы, откуда его позвали: из JavaSscript или BEMHTML. /cc @veged @dfilatovИдея
depsByTech
предполагает, что ты можешь явно управлять тем, какие из шаблонов попадут в клиентский JS (иначе пришлось бы собирать все).Когда блоки задекларированы без указания технологии, они собираются «один в один». В данном случае шаблон
link
попадает вindex.bemhtml.js
, но не попадает вindex.min.js
пока это не будет указано явно.При этом нет необходимости из блока
github
указывать зависимость depsByTech отi-bem
, сборщик поймет, что хотяlink
зависит от нее «обычным способом», она все равно нужна на клиенте.То есть если я использую библиотеку, в которой блок A строится с использованием блока B, и вдруг решила построить это всё на клиенте, мне нужно будет не только прописать зависимость depsByTech от блока A, но так же от блока B (и от всех других блоков, которые требуются для работы A)?
нет, если в блоке А прописана зависимость от В, то на клиент достаточно будет прописать только А.
Но эта "зависимость A от B" должна быть byTech или обычная тоже сойдет?
Должно работать с обычной.
Тогда возвращаюсь к своему вопросу "Почему вот такой зависимости не достаточно? https://github.com/varya/varya.github.com/commit/bc4f0ef1fb2eae62b57f1c2d6f81fd713bb42dd6"
У тебя было указано в зависимостях через depsByTech, что шаблон github__repo.bemhtml должен попасть на клиент?
Да, вот https://github.com/varya/varya.github.com/blob/410b359d0dc7f9abc8bbe321439a304651a9d2bd/desktop.blocks/github/github.deps.js#L9
See also: #111
@zxqfox У Вари и так массив, разве нет?
@varya упячка вот здесь — из-за того, что тут используется
mustDeps
, многие блоки (иlink
в том числе) оказываются раньше, чем базовые шаблоны. соответственно, базовые шаблоны «перевешивают» шаблоны блоков.@tadatuta, Да вроде нет. Если переделать на shouldDeps — ничего не меняется, кроме того что highlight перестаёт работать как задумано :-)
@apsavin Просто ссылку оставил ;) вообще, я другой пост искал, и не факт, что он на форуме. Там где @veged, @floatdrop и @matmuchrapna обсуждали депсы.
@varya проверил, у меня после
шаблоны заработали как задумано.
Спасибо. Я решила по-другому (но суть та же): Поскольку
highlight__hack
мне нужен рано, оставилаmustDeps
, но сделала это зависимостьюpage
, а неi-bem
. А у блокаgithub
прошуi-bem
какmustDeps
, чтобы он гарантированно был раньше.