2012-03-23 1 views
1

Ich verwende das Ressourcen-Plugin in Grails 2.0.1. Das Problem, das ich habe, ist, eine JavaScript-Ressource zu erhalten, die mit r: external angegeben wird, um sie nach allen anderen zuvor deklarierten Skripten mit r: require oder r: external zu platzieren. Derzeit wird die mit r: external angegebene Ressource an dem Ort ausgegeben, an dem das externe Tag r: external platziert ist.Platzierung der JS-Ressource über <r: external />

Ich habe eine Layout-Datei, die eine r enthält: require Tag einige Kernressourcen zu holen:

<html> 
<head> 
    ... 
    <r:require module="core" /> 
</head> 
.... 
</html> 

Dann wird ein APS, das ein anderes r umfasst: require-Tag, gefolgt von einem r: Außen tag:

<head> 
    ... 
    <r:require module="forms" /> 
    <r:external dir="js" file="page-specific-resource.js" /> %{-- specifying disposition="defer" has no effect --}% 
    .... 
</head> 
... 

Meine Erwartung ist, dass jede der JavaScript-Ressourcen, die ich aufnehmen möchte, in der verzögerten Disposition zuerst mit den Kernressourcen, dann mit den Formularressourcen und zuletzt mit der seitenspezifischen Ressource ausgegeben wird. Die tatsächlichen Ergebnisse sind, dass die Kern- und Formularressourcen wie erwartet in der verzögerten Disposition ausgegeben werden, die seitenspezifische Ressource jedoch in head ausgegeben wird, wo das externe Tag r: platziert wird (Angeben von disposition = "verschieben" scheint keine Auswirkungen zu haben)).

Ist meine Erwartung falsch oder ist das ein berechtigtes Problem? Gibt es eine andere Möglichkeit, seitenspezifische Ressourcen anzugeben (ich versuche, diese Arten von Ressourcen in der Ressource DSL zu deklarieren) und die nach allen zuvor deklarierten Ressourcen positioniert zu haben?

Antwort

0

Wie Marc Palmer auf der Grails User-Mailingliste beantwortet (http://grails.1312388.n4.nabble.com/Placement-Of-JS-Resource-Via-lt-r-external-gt-td4506074.html#none):

Ich fürchte, Ihre Erwartung falsch ist.

r: external ist nur zum Rendern von Links, wo Sie es aufrufen.

Sie müssen Ihre Abhängigkeiten angeben, oder legen Sie Ihr r: external unter Ende der Seite.

Das Deklarieren von Modulen für "funktionale Bereiche" Ihrer App ist profitabel. Es bedeutet, dass Sie sie auch zusammen bündeln können, wenn nötig, oder feinkörnige Kontrolle haben und die Seite muss nicht mehr davon bewusst sein.

Verwandte Themen