Różnica między assetic: dump a assets: install
W Symfony2, jaka jest różnica między assetic:dump
i assets:install
? W jakich scenariuszach należy stosować każde z tych poleceń i w jakiej kolejności (jeśli kolejność jest istotna)?
1 answers
W zasadzie pisałem o tym niedawno w artykule orocrm, który bazuje na Symfony 2. Jeśli chcesz poznać kontekst / dlaczego różnych poleceń, może cię to zainteresować.
Istnieją dwa różne systemy do włączania plików frontend (javascript, css, obrazów itp.) w aplikacji Symfony. Komenda {[8] } była pierwsza. Polecenie to przeszukuje wszystkie pakiety Symfony w aplikacji pod kątem
Resources/public
Folder. Jeśli znaleziono, assets:install
polecenie skopiuje pliki lub dowiązania symbolicznego z Resources/public
do web/public/bundle/[bundle-name]
. Tutaj linki utworzone za pomocą funkcji twig assets
będą szukać tych plików. To
<script src="{{ asset('js/script.js') }}" type="text/javascript"></script>
Staje się tym
<script src="/bundles/[bundle-name]/js/script.js" type="text/javascript"></script>
To wszystko, co robi system. Pozwala na przechowywanie plików frontend z pakietem.
System assetic
jest inny. Za pomocą assetic
linkujesz do takich plików.
{% javascripts '@AcmeFooBundle/Resources/public/js/foo.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
Są podobne tagi dla arkuszy stylów i obrazów. Zauważ, że assetic
pozwala na link do pliki w dowolnym pakiecie. (@AcmeFooBundle
). Assetic pozwoli Ci również łączyć się z wieloma plikami w folderze z symbolami wieloznacznymi.
{% javascripts '@AcmeFooBundle/Resources/public/js/*' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
Kolejną różnicą od {[14] } jest generowane linki. W środowisku dev
będą wyglądać mniej więcej tak.
<script type="text/javascript" src="/app_dev.php/js/foo.js"></script>
<script type="text/javascript" src="/app_dev.php/js/bar.js"></script>
Oznacza to, że żądania tych plików będą uruchamiane przez kontroler frontowy PHP (app_dev.php
) poprzez specjalne Trasy ustawione w pakiecie assetic
. Oznacza to, że gdy jesteś w trybie dev
, nigdy nie musisz wyrzucać swoich aktywów. Są dołączane automatycznie. Umożliwia również stosowanie filtrów do plików. Na przykład, poniższy filtr stosuje filtr cssrewrite
do pobranych plików.
{% stylesheets 'bundles/acme_foo/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Jeśli kiedykolwiek chciałeś programowo zmieniać wyjście swoich zasobów - assetic
pozwala ci to zrobić, pisząc niestandardowe filtry gałązek.
<script type="text/javascript" src="/js/as5s31l.js"></script>
Skąd pochodzi as5s31l.js
? To właśnie robi assetic:dump
Komenda. To łączy wszystkie pojedyncze pliki javascript/css (po zastosowaniu filtrów) i tworzy ładny, statyczny, buforowalny plik do produkcji.
Co musisz zrobić
O ile projekt nie mówi ci inaczej, zawsze powinieneś uruchamiać assets:install
i assetic:dump
, ponieważ nigdy nie dowiesz się, który z pakietów innych firm używa tych poleceń. Musisz tylko uruchomić assetic:dump
przed wdrożeniem lub wyświetlaniem aplikacji w trybie prod
. Porządek jest nieistotny.
Jeśli chodzi o system, którego powinien używać twój pakiet - jeśli przeczytałeś powyższe i nie wiesz, co assetic
Może dla Ciebie zrobić, użyj assets
. Nic Ci nie będzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-10 19:39:58