Объедините JavaScript из нескольких шаблонов с помощью Assetic

Предположим, у меня есть следующие шаблоны веточек:

base.html.twig:

<html>
    <body>
    {% block javascripts %}
        {% javascripts
            '../app/Resources/js/jquery-2.2.4.min.js'
            '../app/Resources/js/base.js'
            filter='uglifyjs2' output='main.js'
        %}
            <script src="{{ asset_url }}" type="text/javascript"></script>
        {% endjavascripts %}
    {% endblock javascripts %}
    </body>
</html>

page1.html.twig:

{% extends 'base.html.twig' %}

{% block javascripts %}
    {{ parent() }}
    {% javascripts
        '../app/Resources/js/page1_specific.js'
        '../app/Resources/js/page1_other.js'
        filter='uglifyjs2' output='page1.js'
    %}
        <script src="{{ asset_url }}" type="text/javascript"></script>
    {% endjavascripts %}
{% endblock javascripts %}

С этим кодом page1 Шаблон сделает два запроса javascript, один для main.js и еще один для page1.js,

Можно ли написать по-другому, поэтому я бы сгенерировал только один большой js-файл, специфичный для каждого окончательного шаблона, включая базовую страницу js и page1 конкретные JS?

1 ответ

Решение

Вы можете объявить в своем config.yml базу js, например так:

assetic:
    assets:
        base:
        inputs:
            - '@AppBundle/Resources/public/js/jquery-2.2.4.min.js'
            - '@AppBundle/Resources/public/js/base.js'

И назовите это в своем блоке JavaScript:

{% javascripts
    '@base'
    '../app/Resources/js/page1_specific.js'
    '../app/Resources/js/page1_other.js'
    filter='uglifyjs2' output='page1.js'
%}

Вы можете найти больше информации здесь.

Другие вопросы по тегам