modules.define('test', ['i-bem__dom', 'BEMHTML'], function (provide, BEMDOM, BEMHTML) {
provide(BEMDOM.decl(this.name, {
onSetMod: {
js: {
inited: function () {
console.log(BEMHTML.apply({block: 'foo'}));
}
}
}
}));
});
Функция BEMHTML.apply генерирует HTML-элементы по BEMJSON-декларации в соответствии с правилами именования БЭМ.
в консоли ожидаю что-нибудь типа
<div class="foo"></div>
Но там ничего, пустая строка.
Как это работает?
Пробую на https://github.com/bem/project-stub.git --depth 1 --branch v1.5.0 my-bem-project
На уровне сборки есть проверка — если ни одного клиентского шаблона не оказалось, то все шаблоны просто удаляются из сборки, потому и результат пустой.
Если добавить в папку с блоком
test.deps.js
с подключением любого шаблона на клиент (см. https://ru.bem.info/technology/deps/about/#Подключение-зависимостей-по-технологии), то заработает.Еще вариант — воспользоваться опцией forceBaseTemplates, чтобы базовые шаблоны сохранялись даже при отсутствии пользовательских, то тоже все будет работать. Добавить опцию нужно сюда.
Вообще, пожалуй, стоит ее включить прямо в
project-stub
, спасибо за идею!