Symfony2'de assetic:dumpve arasındaki fark assets:installnedir? Bu komutların her biri hangi senaryolarda ve hangi sırayla kullanılmalıdır (sıra uygunsa)?
Symfony2'de assetic:dumpve arasındaki fark assets:installnedir? 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:installkomut geldi. Bu komut, bir uygulamadaki tüm Symfony Paketlerini bir
Resources/public
Klasör. Bulduysanız, assets:installkomut kopyalamak veya dosyaları sembolik bir link olacaktır Resources/publiciçin web/public/bundle/[bundle-name]. Twig assetsiş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 assetssistem yok. Ön uç dosyalarınızı paketle birlikte saklamanıza olanak tanır.
asseticSistem farklıdır. İle asseticbunun 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 asseticdosyalara 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, asseticoluş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, asseticpaketteki özel yol ayarları aracılığıyla PHP ön denetleyicisi ( ) aracılığıyla çalıştırılacaktır . Bu, devmoddayken, 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 cssrewritefiltre, 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 asseticisterseniz, 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.jsgeliyor? Yani ne assetic:dumpkomut 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:installve assetic:dumpçünkü üçüncü taraf paketlerinizden hangisinin bu komutları kullandığını asla bilemezsiniz. assetic:dumpUygulamayı prodmodda 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 asseticyapabileceğ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>