bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Как затащить BEMTREE на клиент? #1011

Open kompolom opened 8 years ago

kompolom commented 8 years ago

Хочется избавиться от написания bemjson в js файлах блоков. Учитывая, что на клиенте уже есть BEMHTML, кажется вес js не должен сильно увеличиться.

tadatuta commented 8 years ago

Затаскивание BEMTREE на клиент в простом случае сводится к добавлению <script src="path/to/bemtree-bundle.bemtree.js"></script>.

Альтернативный вариант — пойти по пути того, как в project-stub на клиент попадают только указанные в депсах шаблоны. Для этого потребуется добавить полностью аналогичную https://github.com/bem/project-stub/blob/master/.enb/make.js#L64-L83 секцию про BEMTREE и потом домержить полученный бандл в клиентский JS здесь.

Вес JS увеличится ровно на размер BEMTREE-бандла, так как рантайм bem-xjst реиспользовать не получится.

kompolom commented 8 years ago

рантайм bem-xjst реиспользовать не получится.

Почему?

tadatuta commented 8 years ago

В текущей реализации классы движков BEMHTML и BEMTREE наследуются от bem-xjts и перекрывают некоторые методы.

kompolom commented 8 years ago

Вот это засада...

kompolom commented 8 years ago

@tadatuta Как я понял, во втором варианте на выходе получится модуль, аналогичный bemhtml.

В таком случае, Есть ли вариант не тащить в js бандл все разом, а подгрузить bemtree-модуль в рантайме, когда он понадобится?

tadatuta commented 8 years ago

BEMTREE-бандл — это просто JS-файл, его можно подгрузить в любой момент.