2012-01-25 7 views
5

próbuje się nauczyć wtyczki ZasobyWtyczka Grails Resources, moduły i <r:img> do renderowania obrazów?

Z mojego rozumienia, pomaga zdefiniować "zasoby", takie jak pliki css i javascript i automatycznie wciągnąć je do swojego gsp's, gdy są potrzebne. Rozumiem, jak tworzyć moduły, które mogą być załadowane z użyciem znaczników itp

Część im nie rozumiejąc to: http://grails-plugins.github.com/grails-resources/guide/4.%20Using%20resources.html#4.2%20Linking%20to%20images

Tak Ive stworzył moduł o nazwie „obrazy” w Config.groovy następująco:

grails.resources.modules = { 
    images { 
     resource url:'/images/view.jpg', attrs:[width: 1280, height:720 , alt: 'my view'] 
     resource url:'/images/breakfast.jpg', attrs:[width: 1280, height:720, alt: 'breakfast'] 
    } 
} 

zasobów są zawarte na stronie .gsp w sekcji head następująco:

<head> 
    <r:require modules="jquery-ui, blueprint"/> 
</head> 

Znam zasoby zostały suc cessfully dodany do sekcji head bo kiedy sprawdzać źródło strony widzę je tam:

<link href="/ResourceTest/static/Aa7jV0N2qZjOz7TLZ9cl5cREIh2y5jJYV0ytn4nQg9r.jpg" rel="shortcut icon" width="1280" height="720" alt="my view" /> 
<link href="/ResourceTest/static/IpQBSjrYeLDdSUBGbP3jhf6Kkhvu1zV3XRtwWfKOIMn.jpg" rel="shortcut icon" width="1280" height="720" alt="breakfast" /> 

Moje pytanie brzmi: w jaki sposób zasoby są następnie wykorzystywane obraz? mam na myśli wiem, czy to javascript, importowanie zasobu daje dostęp do korzystania z funkcji w kodzie HTML, ale w odniesieniu do obrazów, witryna mówi: "Gdy to zrobisz, użycie do odniesienia się automatycznie ustawi szerokość, wysokość i inne cechy. "

Jak? Próbowałem następujących czynności:

<r:img module="images"> 
<r:img alt="breakfast"> 

i garść innych bez powodzenia

co działa jest:

<r:img uri="/images/breakfast.jpg"> 

ale ten działa niezależnie od tego, czy dodanie modułu z tagiem r: require. Więc jaki jest sens używania tej wtyczki do obrazów i jak tego użyć?

+1

Czy nie dodaje on po prostu szerokości i wysokości z wpisu zasobów, gdy robisz "? Przynajmniej tak to jest napisane w dokumentach ... –

+0

Jeśli to wszystko, co robimy - to jest fajne, chyba ... po prostu nie zrobiłem różnicy, gdy skomentowałem tagi .. więc nie wiem –

+0

Zgaduję pomaga/przetwarza takie rzeczy jak buforowanie, gzip itp. w trybie produkcyjnym –

Odpowiedz

0

Znacznik <r:img> działa dobrze bez naszego <r:require>; it even works with undeclared image resources.

Punkt znacznika wymagającego polega na zapobieganiu duplikowaniu zasobów. Załóżmy na przykład, że masz wiele zasobów javascript, które opierają się na jQuery i wszystkie są wymagane. Dodaj kolejną warstwę komplikacji: powiedzmy, że faktycznie łączysz różne szablony GSP za pomocą sitemesh i mają one swoje własne zależności zasobów. Jeśli po prostu umieścisz normalny kod HTML, aby odwoływał się do tych zasobów w nagłówku każdego układu GOS, możesz otrzymać wiele ich wystąpień w nagłówku strony, co może okazać się problematyczne. Korzystanie z wtyczki zasobów pozwala uzyskać tylko jedną instancję wymaganego zasobu.

Zobacz http://grails-plugins.github.io/grails-resources/ref/Tags/require.html i http://grails-plugins.github.io/grails-resources/ref/Tags/layoutResources.html.

Jednak z obrazami nie jest to konieczne. Jeśli masz obraz więcej niż jeden raz na stronie, prawdopodobnie jest to spowodowane tym, że go potrzebujesz, lub ponieważ stosujesz nadmiarowe układy i musisz trochę zmienić. Więc masz rację, że znacznik require nie robi zbyt wiele dla obrazów wywoływanych przez <r:img>. Jest tak dlatego, że obrazy są innym rodzajem zasobu, więc są traktowane inaczej. Nie przejmuj się.:)

Powiązane problemy