Я хочу предоставлять компоненты написанные на БЭМ для проектов, которые больше нигде БЭМ не используют.
При этом я хочу предоставить им возможность до-/пере- определять шаблоны компонентов.
В bh
это реализуется приблизительно следующим образом:
modules.require(['bh'], function(bh){
bh.match(/* определение шаблона */)
});
Как такого же эффекта можно достичь с шаблонами bemtree
/ bemhtml
?
@Guria Прямо сейчас в рантайме переопределять XJST-шаблоны можно только в dev-режиме, т.к. для production предполагается этап компиляции.
Влад @vkz, вы не продвинулись в доопределении шаблонов в рантайме?
Кажется временно можно использовать связку
BEMTREE
+BH
, тогда появится возможность доопределять хотя бы шаблоны представления.Кстати, почему в вопросах типа "что использовать вместо
bemtree
для шаблоновbh
?" никогда не встречался ответ "Можно использоватьbemtree
"?@Guria Можно, конечно. Я был уверен, что это достаточно очевидно. Тут скорее возникает вопрос в том, что пользователю придется уметь и XJST и BH, все равно остается этап компиляции и, кмк, теряется смысл в том, чтобы не использовать BEMHTML. Хотя, конечно, довод про переопределение шаблонов в рантайме железный.
@tadatuta @Guria а вы встречали случаи, кроме описанного выше, когда может пригодиться переопределение шаблонов в рантайме?
@apsavin в общем случае это может быть полезно, когда хочется чанками догружать в рантайм дополнительную функциональность (скажем, для жирного SPA) и не хочется гонять базовые шаблоны BEMHTML для каждого каждого такого бандла. Я ничего больше придумать не могу.
@tadatuta вариант, хотя, кажется, на базовых шаблонах много не сэкономишь.
@apsavin если догружаемый бандл один — да. а если их пару десятков, то уже и повод задуматься.
+
за жирный SPA. Этот вопрос нам будет очень актуален.На самом деле, в случае жирного SPA - еще большой вопрос, как лучше для пользователя, подождать при открытии и потом пользоваться очень быстро (никто вроде не жалуется на gmail) или постоянно подгружать какие-то кусочки шаблонов и скриптов.
Ну шаблоны действительно не самая тяжёлая часть, а js можно и в динамике подгружать. Однако первоначальный кейс всё равно актуален.
@Guria первоначальный - да, безусловно.
@apsavin лучше всего найти компромис: см. игры от близзард, они жирные, но не требуют 100% загрузки для запуска. Там есть такое понятие, как оптимальный объем, обязательный к наличию «под рукой», а вся лирика догружается «потом» или в процессе работы.
@zxqfox это все в любом случае может меняться в зависимости от проекта.
Спам фильтр радостно сожрал оповещение. Сорри, что сразу не ответил. Работа над дозагрузкой ведется. Как будет, чем порадовать, дам знать.