Ebben a lépésben a helyi összetevőhöz létrehozott alapértelmezett fájlok struktúráját tekintjük át.
Az egyszerű Hello World
példánál a négy JavaScript objektum és a számos kódsor túl soknak tűnhet, de ez arra szolgál, hogy alapot biztosítson összetettebb összetevők kialakításához, valamint bemutassa az Oracle Cloud Sites Service szolgáltatásban az oldalak életciklusával való együttműködést.
A helyi összetevő struktúrájának áttekintése:
Az Oracle Content Management kezdőlapján kattintson a Fejlesztő elemre.
A Fejlesztő oldal jelenik meg.
Kattintson az Összes összetevő megtekintése elemre.
Válassza a menün a Helyi összetevő létrehozása elemet.
Adjon nevet az összetevőnek, például A_Local_Component.
Adjon meg opcionális leírást.
Kattintson a Létrehozás gombra.
Ennek végrehajtása után az A_Local_Component
nevű összetevő megjelenik az összetevők listáján.
Az Oracle Content Management asztali szinkronizáló ügyfélprogramjával keresse meg összetevőjét, és szinkronizálja azt a fájlrendszerrel.
Ha nem rendelkezik az asztali ügyfélprogrammal, megtekintheti az összes összetevőt, és kijelölheti az összetevőt az Oracle Content Management felületének Összetevők oldalán, majd részletezéssel megtekintheti a fájlokat.
Amikor listázza az összetevőhöz tartozó fájlokat, a következő fájlok jelennek meg:
assets render.js settings.html appinfo.json _folder_icon.jpg
Nyissa meg a render.js
fájlt az /assets
könyvtárból.
render.js
fájl alapvető jellemzői a következők:
JavaScript AMD modulként van felépítve, így „kötelező” lehet az oldalhoz.
Hivatkozásokat tartalmaz a KnockoutJS és a JQuery függvénytárra, amelyek az Oracle Content Management oldalának részeként már be vannak töltve.
Tekintsük át a render.js
fájl struktúráját.
A render.js
fájl tartalmában két JavaScript objektum található, amelyek az Oracle Content Management összetevőjéhez szükséges API felületeket valósítják meg: sampleComponentFactory
és SampleComponentImpl
. Ezek az objektumok megvalósítási példaként szolgálnak tetszőleges KnockoutJS alapú összetevő létrehozásához. Az objektumok megvalósítása a használt technológia alapján változik.
sampleComponentFactory
Ezt az objektumot a render.js
AMD modulja adja vissza.
Ez rendkívül egyszerű Factory objektum, és az egyetlen createComponent()
felületet valósítja meg.
Az összetettebb megvalósítások az átadott args
értékét használhatják az összetevő különböző megvalósításainak visszaadásához a viewMode
paraméter alapján. Ez az összetevő lényegesen egyszerűbb megvalósítását teszi lehetővé futásidőben a Site Builder szerkesztővel összevetve.
SampleComponentImpl
Az objektum legfontosabb függvénye a render
, amely az összetevő oldalon való megjelenítésére szolgál.
A Knockout
összetevő megjelenítéséhez az oldalon a render
függvény dinamikusan hozzáadja a sablont az oldalhoz, majd a viewModel
kötéseit alkalmazza a sablonra.
A megvalósítás fennmaradó része a viewModel
paraméter és a sablon inicializálásával foglalkozik, valamint az oldal és az összetevő közötti üzenetváltás kezelésével.
A render.js
fájlban a két további objektum, sampleComponentTemplate
és SampleComponentViewModel
, egyéni megvalósítást biztosít az összetevő számára. Ezek megvalósítása a felhasználó igényeinek megfelelően változik.
sampleComponentTemplate
Ez az objektum a KnockoutJS sablon létrehozását biztosítja. Ez megvárja, amíg az összetevő rendelkezik az összes inicializált adattal, és csak ezután kísérli meg bárminek a megjelenítését.
SampleComponentViewModel
A viewModel
lekéri az összetevő nevében az Oracle Content Management által tárolt adatokat, majd az adatok alapján eldönti, hogy hogyan rendezhető el megfelelően az összetevő.
A Knockout általános observable (megfigyelhető) elemeit használja a sablon az összetevő nevében tárolt metaadatokhoz való hozzáférés kezeléséhez:
self.imageWidth = ko.observable('200px'); self.alignImage = ko.observable(); self.layout = ko.observable(); self.showTopLayout = ko.observable(); self.showStoryLayout = ko.observable();
Triggerek és műveletek integrációja:
Trigger: Függvény az Oracle Content Management triggerének indításához az összetevőből, amely az oldalon lévő más összetevők műveleteihez kapcsolódhat.
self.imageClicked = function (data, event) { self.raiseTrigger("imageClicked"); // matches appinfo.json };
Művelet: Függvény a visszahívás kezeléséhez, amikor a összetevő utasítást kap művelet végrehajtására adott adattörzzsel.
self.executeActionsListener = function (args) { // get action and payload var payload = args.payload, action = args.action; // handle 'setImageWidth' actions if (action && action.actionName === 'setImageWidth') { $.each(payload, function(index, data) { if (data.name === 'imageWidth') { self.imageWidth(data.value); } }); } };
Visszahívás tetszőleges regisztrált művelet igény szerinti végrehajtásához.
SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.EXECUTE_ACTION, $.proxy(self.executeActionsListener, self));
Előfizetések összetevő életciklusára:
Összetevő inicializálása: Biztosítani kell, hogy az összes adat behívásáig az összetevő ne indítson megjelenítést. Ennek kezelése Knockout observable (megfigyelhető) elemeken keresztül történik.
self.componentLayoutInitialized = ko.observable(false); self.customSettingsDataInitialized = ko.observable(false);
Minden szükséges tulajdonság kezdőértékének beolvasása. Ennek kezelése visszahívásokkal történik az adatok lekéréséhez.
SitesSDK.getProperty('componentLayout', self.updateComponentLayout); SitesSDK.getProperty('customSettingsData', self.updateCustomSettingsData);
Metaadat-frissítések: Visszahívás, amikor az összetevő nevében tárolt metaadatok megváltoznak; például amikor a felhasználó megnyitja a Beállítások panelt, és módosítja az adatokat.
SitesSDK.subscribe(SitesSDK.MESSAGE_TYPES.SETTINGS_UPDATED, $.proxy(self.updateSettings, self));
Megjegyzés:
Mivel az Oracle Content Management kiszolgálója mindig beállítja a mime-type értékét a.html
fájlokhoz, nem tölthet fel .html
fájlt, és nem használhatja a "text!"
beépülő modult a betöltéséhez. Ezért a sablonoknál eltérő kiterjesztést kell használnia a betöltéshez a "text!"
beépülő modul használatával, vagy töltse be azt a JavaScript kódba közvetlenül beágyazva a beépített adatokban látható módon.A 2. lépéshez tartozó eredmények ellenőrzése
Most már áttekintéssel rendelkezik az egyéni összetevő megjelenítője struktúrájának létrehozási módjáról. Működésének ellenőrzése:
Módosítsa a sampleComponentTemplate
objektumot a render.js
fájlban a következő sor megváltoztatásával. Módosítsa a következő kódot:
'<!-- ko if: initialized -->'+
Ezt a kódot használja helyette:
'<!-- ko if: initialized -->'+ '<div data-bind="text:\'image width is: \' + imageWidth()"></div>' +
Szinkronizálja vagy töltse fel az összetevőt az Oracle Content Management példánykiszolgálójára.
Szerkessze az oldalt a webhelyen belül, és húzza az A_Local_Component
egyéni összetevőt az oldalra.
Ekkor az image width is: 260px
beállítást kell látnia az összetevőben.
Nyissa meg a Beállítások panelt, és kattintson az Egyéni beállítások gombra.
Módosítsa az image Width mezőt 300px értékűre.
Az alapértelmezett kép mérete 260 képpontról 300 képpontra változik.
A felvett szöveg image width is 300px
értékűre módosul.
A következő témakör: 3. lépés: A helyi összetevő beállítási struktúrájának áttekintése.