Open kompolom opened 8 years ago
compile — это затратная операция, эффективнее собрать все заранее и не тратить на это время в продакшене.
@tadatuta @miripiruni кажется этого уточнения не хватает в доке к bem-xjst
@Guria про это написано. См последнее предложение в этом разделе: https://github.com/bem/bem-xjst/blob/master/docs/ru/3-api.md#Добавление-шаблонов
@miripiruni там предлагается использовать метод generate. Ок. Тот же подход но с методом generate имеет право на существование?
прочитал внимательнее что там ядро подтягивается...
То, что compile
«затратная» не так страшно страшно как вам кажется:
compile
будет выполнятся десять-двадцать миллисекунд.@tadatuta Кстати говоря, если собирать бандлы как обычно, там все шаблоны все равно через compile прогоняются. Так что мы теряем?
@miripiruni формулировка от @tadatuta делает акцент на медленности метода compile
и не желательности его использования в продакшн, что заметно отличается от "Если вам нужно собрать все шаблоны в бандл, то эффективнее использовать метод generate."
А вот комментарий на счёт абсолютных величин полезен, спасибо.
@kompolom а ведь и правда, кроме того можно заставить compile использовать переданную функцию с шаблонами как есть, если правильно составить список аргументов.
@Guria так все есть уже. Открываю собранный бандл:
/// -------------------------------------
/// --------- BEM-XJST Runtime End ------
/// -------------------------------------
var api = new BEMHTML({});
/// -------------------------------------
/// ------ BEM-XJST User-code Start -----
/// -------------------------------------
api.compile(function(match, once, wrap, block, elem, mode, mod, elemMod, def, tag, attrs, cls, js, bem, mix, content, replace, extend, oninit, xjstOptions, local, applyCtx, applyNext, apply) {
/* begin: /home/jenik/projects/hmfr/common.blocks/root/root.bemtree.js */
block('root').replace()(function() {
var ctx = this.ctx,
Я про то же самое в рантайме.
Билд шаблонов с помощью bem-loader
:
https://github.com/awinogradov/react-bl/blob/master/webpack.config.js#L5-L10
Использование compile
в runtime
https://github.com/awinogradov/react-bl/blob/master/src/provider/provider.js
Так как у нас сервер на ноде, возникает вопрос, насколько оправданно собирать bemtree бандлы с bem-xjst внутри. Кажется проще подключить их на старте приложения и досыпать шаблоны из собранных бандлов через compile. Что думаете?