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)?

Author: Richard Keller, 2014-04-05

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.

[[33]}jest to jednak wymagająca wydajność. W produkcji, zamiast łączenia KAŻDEGO pliku pojedynczo za pomocą pliku kontrolera front PHP, wygenerowany HTML będzie wyglądał jak to
<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.

 130
Author: Alan Storm,
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