Symfony 2附加Java脚本,只需一个请求


Symfony 2 append Javascripts, just one request

我有一个布局.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/目录中

这就是你想要的吗?