enb / enb-borschik

ENB tech to run borschik
Other
13 stars 15 forks source link

Фриз bemtree. #13

Closed aliosv closed 9 years ago

aliosv commented 9 years ago

Дано: нодовое приложение

app.get('*', function(req, res) { BEMTREE.apply({ block : 'root' }).then(function(bemjson) {
    res.send(BEMHTML.apply(bemjson));
}) })

root.bemtree

block('root').def()(function(){
   return {
      block : 'page',
      styles : [{ elem : 'css', url : '/_site.css' }],
      scripts : { elem : 'js', url : '/_site.js' }
   };
})

Задача: фризить статику(js, css, ico, ...) и отдавать клиенту подобный html

<doctype html>
<head>
    <link href="sha-1.css">
    <script src="sha-1.js">
...

Проблемы: 1) enb-borschik ничего не знает про готовность замораживаемых таргетов, т.е. на примере выше ?.css и ?.js таргеты могут не существовать в момент фриза борщиком. 2) Борщик замораживает файлы с определенными расширениями, по умолчанию среди них нет css и js.

aliosv commented 9 years ago

Решение https://github.com/enb-make/enb-borschik/pull/12

Можно использовать технологию html борщика, но тогда зафриженными будут все найденные в html ресурсы. Хочется иметь контроль с помощью borschik.link():

block('root').def()(function(){
   return {
      block : 'page',
      styles : [{ elem : 'css', url : borschik.link('_site.css') }],
      scripts : { elem : 'js', url : '_site.js' } // <-- а этот не фризим
   };
})
tormozz48 commented 9 years ago

Кажется, что после вливания https://github.com/bem/borschik/pull/97, выпуска новой версии борщика и соответственно обновления зависимости борщика в этом пакете, файлы bemtree, которые также являются js файлами должны обрабатываться правильным образом

aliosv commented 9 years ago

@tormozz48, лично мне не хватает еще json'a.

blond commented 9 years ago

@aliosv, json'а как расширения для фриза боршика?

aliosv commented 9 years ago

@blond, да