Объедините 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'
%}
Вы можете найти больше информации здесь.