我有一个布局.html.twig,带有:
{% block js %}
{% javascripts
'Resources/public/js/jquery/jquery-1.7.1.min.js'
'Resources/public/js/jquery/jquery.namespace.js'
%}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
{% endblock %}
我有带的index.html.twig
{% extends "MichaelMikeBundle::layout.html.twig" %}
{% block js %}
{{ parent() }}
{% javascripts
'@MichaelStoreBundle/Resources/public/js/index.js'
'Resources/public/js/jqueryui/jquery.ui.core.js'
'Resources/public/js/jqueryui/jquery.ui.widget.js'
'Resources/public/js/jqueryui/jquery.ui.button.js'
%}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
{% endblock %}
I生产模式页面返回两个js文件(两个请求)。Symfony2将布局中的两个文件合并并输出为一个请求,对索引也是如此——它合并了4个文件并输出为另一个请求。
我的问题是:是否可以像我的例子中那样,让布局和索引文件将所有js作为一个请求输出或者至少将索引文件中的javascript附加到布局中。。。
谢谢你们的帮助!
您必须删除对{{ parent() }}
的调用,将父资产定义复制到模板中,并在那里添加更多输入。
{% extends "MichaelMikeBundle::layout.html.twig" %}
{% block js %}
{% javascripts
'Resources/public/js/jquery/jquery-1.7.1.min.js'
'Resources/public/js/jquery/jquery.namespace.js'
'@MichaelStoreBundle/Resources/public/js/index.js'
'Resources/public/js/jqueryui/jquery.ui.core.js'
'Resources/public/js/jqueryui/jquery.ui.widget.js'
'Resources/public/js/jqueryui/jquery.ui.button.js'
%}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
{% endblock %}
没有比这更好的支持了,因为这不是一个好的做法。首次呈现布局时,用户已经下载了前两个条目。与将这些Java脚本合并到子模板中相比,设置未来的过期标头更有意义。
对于在树枝中插入js文件,我写:
{% block javascripts %}
{{parent()}}
<script src="{{ asset('public/js/userprofile.js') }}" type="text/javascript"></script>
{% endblock %}
public位于Symfony/web/目录中
这就是你想要的吗?