Symfony2'de assetic:dump
ve arasındaki fark assets:install
nedir? Bu komutların her biri hangi senaryolarda ve hangi sırayla kullanılmalıdır (sıra uygunsa)?
Symfony2'de assetic:dump
ve arasındaki fark assets:install
nedir? Bu komutların her biri hangi senaryolarda ve hangi sırayla kullanılmalıdır (sıra uygunsa)?
Yanıtlar:
Aslında bunu yakın zamanda Symfony 2'ye dayanan OroCRM hakkında bir makalede yazmıştım . Farklı komutların bağlamını / nedenini öğrenmek isterseniz, ilginç bulabilirsiniz.
Bir Symfony uygulamasına ön uç dosyalarını (javascript, css, görüntüler, vb.) Dahil etmek için iki farklı sistem vardır. Önce assets:install
komut geldi. Bu komut, bir uygulamadaki tüm Symfony Paketlerini bir
Resources/public
Klasör. Bulduysanız, assets:install
komut kopyalamak veya dosyaları sembolik bir link olacaktır Resources/public
için web/public/bundle/[bundle-name]
. Twig assets
işlevi ile oluşturulan bağlantıların bu dosyaları arayacağı yer burasıdır . Bu
<script src="{{ asset('js/script.js') }}" type="text/javascript"></script>
Bu olur
<script src="/bundles/[bundle-name]/js/script.js" type="text/javascript"></script>
Hepsi bu assets
sistem yok. Ön uç dosyalarınızı paketle birlikte saklamanıza olanak tanır.
assetic
Sistem farklıdır. İle assetic
bunun gibi dosyalara bağlanırsınız.
{% javascripts '@AcmeFooBundle/Resources/public/js/foo.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
Stil sayfaları ve resimler için benzer etiketler var. Herhangi bir paketteki assetic
dosyalara bağlanmanıza izin veren dikkat edin . ( ). Assetic, bir klasördeki birden çok dosyaya joker karakterle bağlanmanıza da izin verir.@AcmeFooBundle
{% javascripts '@AcmeFooBundle/Resources/public/js/*' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
Diğer bir fark, assetic
oluşturulan bağlantılardadır. Gelen dev
çevreye onlar böyle bir şey bakacağız.
<script type="text/javascript" src="/app_dev.php/js/foo.js"></script>
<script type="text/javascript" src="/app_dev.php/js/bar.js"></script>
Yani, bu dosyalara yönelik istekler app_dev.php
, assetic
paketteki özel yol ayarları aracılığıyla PHP ön denetleyicisi ( ) aracılığıyla çalıştırılacaktır . Bu, dev
moddayken, varlıklarınızı asla terk etmenize gerek olmadığı anlamına gelir . Otomatik olarak dahil edilirler. Ayrıca dosyalara filtre uygulamanıza olanak tanır. Örneğin, aşağıdaki cssrewrite
filtre, içeri alınan dosyalara uygulanır .
{% stylesheets 'bundles/acme_foo/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Ön uç varlıklarınızın çıktısını programlı olarak değiştirmek assetic
isterseniz, bunu özel dal filtreleri yazarak yapmanızı sağlar.
Ancak bu, yoğun performans gerektirir. Üretimde, her bir dosyayı ayrı ayrı bir PHP ön denetleyici dosyası aracılığıyla bağlamak yerine, oluşturulan HTML şöyle görünecektir
<script type="text/javascript" src="/js/as5s31l.js"></script>
Nereden as5s31l.js
geliyor? Yani ne assetic:dump
komut yok. O birleştirir (filtreleri uygulandıktan sonra) tüm bireysel javascript / css dosyaları ve üretim için güzel, statik ön belleğe dosya oluşturur.
Proje özellikle aksini söylemedikçe, her zaman çalıştırmalısınız assets:install
ve assetic:dump
çünkü üçüncü taraf paketlerinizden hangisinin bu komutları kullandığını asla bilemezsiniz. assetic:dump
Uygulamayı prod
modda dağıtmadan veya görüntülemeden önce yalnızca çalıştırmanız gerekir . Düzen alakasız.
Paketinizin hangi sistemi kullanması gerektiğine gelince - yukarıdakileri okuduysanız ve sizin için ne assetic
yapabileceğinden emin değilseniz, kullanın assets
. İyi olacaksın.
<script type="text/javascript" src="app_dev.php/js/as5s31l.js"></script>
Aslında belirttiğiniz yerde gerçekten mi demek istediniz <script type="text/javascript" src="app.php/js/as5s31l.js"></script>