2016-05-23 56 views
1

你好我嘗試我的JS使用YUI過濾器從asseticAssetic和樹枝繼承

結合我有一個第一根樹枝佈局(template.html.twig)與一些JS assetics聲明:

{% 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 %} 

{ %末端嵌段%}

然後我嘗試在我孩子的模板,以覆蓋此塊:

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

{% endblock%}

我認爲asset:dump會將所有js合併到同一個文件中,但它會生成多個文件:1爲template.html.twig,每個子模板爲1。 這是正常的行爲嗎?另一方面,資產:轉儲在本地真的很慢。如何加快開發環境?

回答

1

是的,這是正常的behviour。每個{% javascripts %}標記將輸出一個Javascript文件,{{ parent() }}輸出由父模板生成的JS文件,但不會與子標記javascripts合併。

+0

它會是一個更好的方法來合併qth父文件 – Python

+0

沒有這樣的事情,我不認爲你會想要它,如果有的話。 'javascripts'生成的文件在運行時生成,然後被緩存。如果編譯文件列表從一個頁面更改爲另一個頁面,則會打破文件緩存的任何可能性,從而降低您的性能。爲什麼你需要這麼多隻有1個文件? – Terenoth

0

這應該是你想要的行爲。兩個單獨的文件更好:

由於瀏覽器緩存,大型.js文件加載一次並應用於所有頁面,而特定於站點的部分則在需要時添加。這是最有效的方式。