2012-10-24 8 views
15

Ich habe versucht, mehrere Kategorien zum Einbetten von [] und Abhängigkeiten [] austauschbar viele Male hinzuzufügen. Aber ich sehe immer einen Abhängigkeitsauflösungsfehler in JavaScript auf der Website.Was ist der Unterschied zwischen embed [] und Abhängigkeiten [] für den Typ ClientLibraryFolder?

Auch, wie gebe ich die Reihenfolge der Kategorien in einem Eintrag mit mehreren Werten wie Embed []? Gibt es eine Möglichkeit, die Reihenfolge der JavaScript-Quelle, die beim Start der Website geladen wird, zu kontrollieren?

Antwort

27

categories ist die Liste der Bezeichner, unter denen eine clientlib veröffentlicht werden soll.

dependencies sollten Ihre Seite verursachen zusätzliche Anfragen müssen andere clientlibs (extern "subscribe")

embed sollte "Aggregat" die anderen clientlibs in den aktuellen clientlib (interne subscribe)

beide Eigenschaften kann mehrere Werte haben, und die CRXDE Lite-Schnittstelle ermöglicht es, die Reihenfolge der Elemente in der Werteliste zu ändern.

Gegeben Clientlibs:

  • /etc/clientlibs/DEPA Kategorien = [ "DEPA"]
  • /etc/clientlibs/DEPB Kategorien = [ "DEPB"]
  • /etc/clientlibs/DEPC Kategorien = [ "DEPC"]
  • /etc/clientlibs/USEA Kategorien = [ "USEA"], Abhängigkeiten = [ "DEPA", "DEPB"]
  • /etc/clientlibs/Useb Kategorien = [ "Useb "], embed = [" depB "," depC "]

Wenn eine Seite verwendet "USEA" <cq:includeClientLib categories="useA"/>, dann sollte die HTML haben Anfragen für DEPA, DEPB, USEA (über ihre entsprechenden URLs, dh /etc/clientlibs/depA.css

Wenn eine Seite "Useb" <cq:includeClientLib categories="useB"/> verwendet, dann ist die HTML sollte habe nur eine Bitte um VerwendungB. Der Inhalt von /etc/clientlibs/useB.css wäre die Verkettung von Inhalten von depB, depC, useB.

Der Bibliotheksmanager unter {localhost} /system/console/configMgr/com.day.cq.widget.impl.HtmlLibraryManagerImpl verfügt über eine Debugkonfiguration, um festzustellen, ob die Anforderungen tatsächlich verkettet sind. Dies wird bei http://dev.day.com/docs/en/cq/current/deploying/configuring_osgi.html#par_variable_18 dokumentiert

mehrere Abhängigkeiten zu definieren (vorausgesetzt, Sie Maven verwenden aus Ihrem Dateisystem zu bauen und installieren in CQ5), der clientlibs Ordner wird eine Datei „.content.xml“, die das folgende Attribut benötigt:

dependencies="[depB,depC]" 
+0

Erstaunliche Erklärung! – Oliver

+9

Ein Detail fehlt jedoch: Abhängigkeiten sind transitiv, Einbetten nicht. Beispiele: A hängt von B ab, in dem C -> C + B und A geladen sind. A bettet B, die von C abhängt -> B + A sind geladen, C ist nicht. Dies kann schwierig sein, wenn Sie einige CQ-Bibliotheken einbetten möchten (um eine einzelne JS anzufordern), und diese Bibliotheken hängen von anderen CQ-Bibliotheken ab. Sie müssen dann alle in der richtigen Reihenfolge einbetten. –

+0

Ich sollte hinzufügen, dass 'Kategorien' dazu gedacht sind, weg von der Verzeichnisstruktur zu abstrahieren.Daher ist es NICHT hilfreich, Kategorienbeschriftungen zu erstellen, die die Ordner im Wesentlichen nachahmen. –