2013-03-14 9 views
8

Pracuję nad zminimalizowaniem plików js i css w aplikacji grails. Pierwotnie planowałem użyć wtyczki zasobów, aby zminimalizować zasoby (spojrzałem również na jawr i performance-ui, ale obecnie zasoby wydają się de facto standardem).Metody minimalizowania js i css w aplikacjach grailsów

Zasoby ułatwiają zminimalizowanie poszczególnych plików CSS przy użyciu YUI, ale mamy ponad 40 plików JS, które chcielibyśmy połączyć w jeden plik (a pliki będą również musiały być łączone w odpowiedniej kolejności) nie widziałem nic co sugeruje, że zasoby obsługuje tej wyjęciu z pudełka, to są metody mamy zaplanowane do tej pory:

  1. Dodaj nowe Grails taglib aby złączyć JS i pliki cSS, aby utworzyć jeden i jeden js css i zminimalizuj przy użyciu wtyczki zasobów. Naiwna implementacja będzie oznaczała, że ​​yui-minify działa za każdym razem, gdy strona jest wyświetlana (!!), więc musieliśmy jakoś przetworzyć pamięć podręczną.

  2. Użyj grails.war.resources BuildConfig, aby zminimalizować js i css. Pozwoli to obejść problem z buforowaniem, ponieważ zasoby będą budowane i minimalizowane tylko w czasie kompilacji, ale będą wymagać od nas używania grails run-war do testowania lokalnie, stąd wszelkie błędy związane z miniarstwem nie zostaną złapane dopiero później w dev cykl.

To musi być dość powszechny problem. Co robią inni ludzie? Chciałbym usłyszeć o innych podejściach lub sprawdzonych metodach, z których mogę skorzystać.

Odpowiedz

1

Możesz tworzyć wszystkie zasoby przy użyciu tego samego pakietu, z tym, że będziesz miał tylko jeden połączony js. Przykład:

main { 
    resource id: 'mainjs', url: 'js/main.js' 
    defaultBundle: 'mybundle' 
} 

second { 
    resource id: 'secondjs', url: 'js/second.js' 
    defaultBundle: 'mybundle' 
} 

Zgodnie z docs:

W „bundle” odwzorowujący dodaje razem zasobów tego samego typu, aby zmniejszyć liczbę plików Twoje strony klienta żądają.

Program odwzorowujący "pakunek" sprawdza wartość właściwości "pakunek" na zasobach , a jeśli ją znajdzie, doda zasób do nowego syntetycznego zasobu zagregowanego .

Ten zagregowany zasób jest przetwarzany przez program odwzorowujący, więc podlega on innym optymalizacjom, które stosujesz do rodzaju zasobów , który agreguje pakiet.

Pakiety znajdują się zawsze w katalogu głównym folderu zasobów statycznych - co oznacza, że ​​odwołania do plików wewnątrz pakietu muszą zostać ponownie zmienione, aby nadal odnosić się do tych samych plików. Jest to możliwe dzięki plikom CSS csspreprocessor i cssrewriter.

Powiązane problemy