我有一個使用Symfony 2編寫的單頁web應用程序,其中所有css和javascript資源都位於web/static/all.js和web/static/all.js中。這些距離intex.html.twig模板以標準的方式鏈接:將css和javascript資源的內容嵌入Symfony中的視圖
{% javascripts output='static/all.js' filter="?closure"
'@MyBundle/Resources/assets/vendor/jquery/jquery.js'
'@MyBundle/Resources/assets/...'
'@MyBundle/Resources/assets/...'
%}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
{% stylesheets output='staic/all.css' filter="?yui_css" combine=true
'@MyBundle/Resources/assets/css/reset.css'
'@MyBundle/Resources/assets/css/...'
'@MyBundle/Resources/assets/css/...'
%}
<link rel="stylesheet" href="{{ asset_url }}" type="text/css" media="all" />
{% endstylesheets %}
這已經很酷了,因爲瀏覽器只需要做的第一期間推出3個請求和1或0的請求後(所有.css和all.js使用.htaccess緩存)。
但我想更進一步,只需將所有css和js轉儲到index.html,類似於Google在其主頁上執行的操作。這將在第一次運行期間僅導致一個http請求,這會加快應用程序的速度。最好有一個標誌傳遞給模板,或者保存在twig全局模式中,這樣可以根據需要在兩種模式之間切換。
{%if dumpAssetsIntoTemplate %}
{# all js and css here #}
{% else %}
{# asset urls #}
{% endif %}
這怎麼能用最小的痛苦來完成?
謝謝!它爲我工作。 這是怎樣的代碼看起來在末尾(JS): {%的JavaScript輸出= 'all.js' 過濾器= 「?封」 '@ MyBundle /資源/資產/ ......' %} {%如果dumpAssetsIntoTemplate%} <腳本類型= 「文本/ JavaScript的」> {{渲染(ASSET_URL)}} {%其他%} <腳本類型= 「文本/ JavaScript的」 SRC =「{{ASSET_URL} }「> {%endif%} {%endjavascripts%} –
這似乎只適用於開發環境。在製作中,渲染內容是空的。 – Adambean