Наследование ассетиков и веточек

Привет, я пытаюсь объединить свой js с фильтром yui из сборки

У меня есть первый макет веточки (template.html.twig) с некоторыми декларациями активов js:

{% block javascripts %}
{% javascripts 
    'bundles/comitiapp/js/jquery.remodal.min.js'
    'bundles/comitiapp/js/ajax/comiti.ajax.search.js'
    'bundles/comitiapp/js/init.js'
    'bundles/comitiapp/js/external/Chart.min.js'
    'bundles/comitiapp/js/charts.js'
    'bundles/comitiapp/js/comiti.villes-france.js'
    'bundles/comitiapp/js/external/jquery.validate.min.js'
    'bundles/comitiapp/js/comiti.form-validation.js'
    '//cdn.datatables.net/1.10.11/js/jquery.dataTables.js'
    '//cdn.datatables.net/buttons/1.1.2/js/dataTables.buttons.min.js'
    '//cdn.datatables.net/buttons/1.1.2/js/buttons.flash.min.js'
    '//cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js'
    '//cdn.rawgit.com/bpampuch/pdfmake/0.1.18/build/pdfmake.min.js'
    '//cdn.rawgit.com/bpampuch/pdfmake/0.1.18/build/vfs_fonts.js'
    '//cdn.datatables.net/buttons/1.1.2/js/buttons.html5.min.js'
    '//cdn.datatables.net/buttons/1.1.2/js/buttons.print.min.js'
    filter='yui_js'
%}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

{% endblock%}

Затем я пытаюсь переопределить этот блок в своих дочерних шаблонах:

{% block javascripts %}
{{ parent() }}
{% javascripts 
    'bundles/comitiapp/js/comiti.cart.js'
    filter='yui_js'
%}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}

{% endblock%}

Я ожидал, что Assetic: dump объединит все js в одном файле, но при этом будет создано несколько файлов: 1 для template.html.twig и 1 для дочернего шаблона. Это нормальное поведение? С другой стороны, ассетик: дамп действительно очень медленный в локальном режиме. Как ускориться в dev env?


person Python    schedule 23.05.2016    source источник


Ответы (2)


Да, это нормальное поведение. Каждый тег {% javascripts %} выводит файл Javascript, {{ parent() }} выводит файл JS, созданный родительским шаблоном, но не объединяется с дочерним тегом javascripts.

person Terenoth    schedule 23.05.2016
comment
Было бы лучше объединить q с родительским файлом - person Python; 23.05.2016
comment
Такого не существует, и я не думаю, что вы бы этого захотели, если бы оно было. Файлы, сгенерированные javascripts, создаются в реальном времени во время выполнения, а затем кэшируются. Если список скомпилированных файлов меняется с одной страницы на другую, это исключает любую возможность кэширования файлов и, таким образом, снижает вашу производительность. Зачем нужно столько, чтобы иметь только 1 файл? - person Terenoth; 23.05.2016

Это должно быть то поведение, которое вы хотите. Лучше два отдельных файла:

Из-за кеширования браузера большой файл .js загружается один раз и применяется ко всем страницам, а части, относящиеся к конкретному сайту, добавляются по мере необходимости. Это самый эффективный способ.

person Hannes Schneidermayer    schedule 01.03.2017