Implementering av Single Page-program
Traditionella webbplatser arbetade på"sida-till-sida"-navigeringsmodeller, som annars kallas för flersidiga program, där webbplatsdesign var nära kopplad till webbadresser och övergångar mellan olika webbsidor kräver en sidladdning. Moderna webbprogram, som SPA (Single Page Applications), använder i stället en modell som möjliggör snabb användning av webbläsargränssnittsåtergivning, som ofta är oberoende av sidomladdning. De här upplevelserna triggas ofta av kundinteraktioner som rullningar, klick och markörrörelser. I takt med att de moderna webbens paradigmer har utvecklats fungerar inte längre de traditionella generiska eventernas relevans, som sidladdning, för personalisering och experimenterande.
at.js 2.x innehåller många funktioner som gör det möjligt för ditt företag att utföra personalisering på nästa generations klienttekniker. Den här versionen fokuserar på att förbättra at.js för att få harmonisk interaktion med SPA.
Här är några fördelar med att använda at.js 2.x som inte finns i tidigare versioner:
- Möjlighet att cachelagra alla erbjudanden vid sidinläsning för att minska antalet serveranrop till ett enda serveranrop.
- Förbättra slutanvändarnas upplevelser enormt på er webbplats eftersom erbjudandena visas direkt via cachen utan fördröjning som introducerats av traditionella serversamtal.
- En enkel kodrad och en engångskonfiguration för utvecklare som gör det möjligt för era marknadsförare att skapa och köra A/B- och Experience Targeting-aktiviteter (XT) via VEC på era SPA.
Adobe Target Vyer och enkelsidiga program
The Adobe Target VEC for SPA utnyttjar det nya konceptet Views: en logisk grupp av visuella element som tillsammans utgör en SPA upplevelse. En SPA kan därför betraktas som en övergång via vyer i stället för URL-adresser som baseras på användarinteraktioner. En vy kan vanligtvis representera en hel plats eller grupperade visuella element inom en plats.
Om du vill förklara vad Vyer är kan du navigera på den hypotetiska e-handelsplatsen som implementeras i React och utforska några exempel på Vyer. Klicka på länkarna nedan för att öppna den här webbplatsen på en ny flik i webbläsaren.
Länk: Hemwebbplats
När vi navigerar till hemsidan ser vi omedelbart en hjältebild som marknadsför en påskförsäljning samt de senaste produkterna som säljer på webbplatsen. I det här fallet kan en vy definieras som hela hemsidan. Detta är praktiskt att notera eftersom vi kommer att gå vidare med detta ännu mer i Implementeringen Adobe Target Vyavsnittet nedan.
Länk: Produktwebbplats
När vi blir mer intresserade av de produkter som företaget säljer väljer vi att klicka på länken Produkter. På samma sätt som hemsidan kan hela produktwebbplatsen definieras som en vy. Vi kan ge den här vyn namnet"products" precis som sökvägsnamnet i https://target.enablementadobe.com/react/demo/#/products)
.
I början av det här avsnittet definierade vi Vyer som hela webbplatsen eller till och med en grupp visuella element på webbplatsen. Som framgår ovan kan de fyra produkter som visas på webbplatsen också grupperas och betraktas som en vy. Om vi vill kalla den här vyn kan vi kalla den"Produkter".
Vi väljer att klicka på knappen Läs in mer för att utforska fler produkter på webbplatsen. Webbplatsens URL ändras inte i det här fallet. Men en vy här kan bara representera den andra produktraden som visas ovan. Vynamnet kan kallas"PRODUCTS-PAGE-2".
Länk: Utcheckning
Eftersom vi tyckte om vissa produkter som visas på webbplatsen bestämde vi oss för att köpa ett par. På utcheckningssajten har vi fått möjlighet att välja normal leverans eller expressleverans. Eftersom en vy kan vara vilken grupp som helst av visuella element på en webbplats kan vi kalla den här"Visa leveransinställningar".
Dessutom kan vykonceptet utökas betydligt mer än så. Om marknadsförarna vill anpassa innehållet på webbplatsen beroende på vilken leveransinställning som har valts, kan en vy skapas för varje leveransinställning. När vi väljer Normal leverans får du i så fall namnet"Normal leverans". Om du väljer Express Delivery får du namnet "Express Delivery".
Nu kanske marknadsförarna vill köra ett A/B-test för att se om en ändring av färgen från blå till röd när expressleverans är valt kan öka konverteringsgraden, i stället för att knappfärgen ska vara blå för båda leveransalternativen.
Implementering Adobe Target Vyer
Nu när vi har täckt Adobe Target Vyer är, vi kan utnyttja detta koncept i Target som ger marknadsförarna möjlighet att köra A/B- och XT-tester på SPA via VEC. Detta kräver en engångsinstallation av utvecklare. Låt oss gå igenom stegen för att konfigurera detta.
-
Installera på .js 2.x.
Först måste vi installera på .js 2.x. Den här versionen av at.js utvecklades med SPA i åtanke. Tidigare versioner av at.js stöder inte Adobe Target Vews och VEC for SPA.
Ladda ned på .js 2.x via Adobe Target Gränssnittet finns i Administration > Implementation. at.js 2.x kan också distribueras via taggar i Adobe Experience Platform.
-
Implementera at.js 2.x funktion,
[triggerView()](https://experienceleague.adobe.com/docs/target-dev/developer/client-side/at-js-implementation/functions-overview/adobe-target-triggerview-atjs-2.html?lang=sv)
på era webbplatser.När du har definierat vyerna för SPA där du vill köra ett A/B- eller XT-test implementerar du at.js 2.x
triggerView()
med de vyer som skickats in som en parameter. Detta gör att marknadsförarna kan använda VEC för att utforma och köra A/B- och XT-tester för de vyer som definierats. OmtriggerView()
funktionen är inte definierad för dessa vyer, VEC identifierar inte vyer och marknadsförarna kan därför inte använda VEC för att utforma och köra A/B- och XT-tester.note note NOTE För visningsstöd i at.js viewsEnabled måste anges till true, annars inaktiveras alla visningsfunktioner. adobe.target.triggerView(viewName, options)
table 0-row-5 1-row-5 2-row-5 3-row-5 Parameter Typ Obligatoriskt? Validering Beskrivning viewName Sträng Ja 1. Inga efterföljande blanksteg.
2. Kan inte vara tom.
3. Visningsnamnet måste vara unikt för alla sidor.
4. Varning: Vynamnet får inte börja eller sluta med '/
'. Detta beror på att kunden vanligtvis extraherar visningsnamnet från URL-sökvägen. För oss: "home" och "/home
" är annorlunda.
5. Varning: Samma vy ska inte aktiveras flera gånger i följd med{page: true}
alternativ.Ange valfritt namn som en strängtyp som du vill representera din vy. Det här visningsnamnet visas i dialogrutan Modifications -panelen i VEC där marknadsförare kan skapa åtgärder och köra A/B- och XT-aktiviteter. alternativ Objekt Nej alternativ > sida Boolean Nej TRUE: Standardvärdet för sidan är true. När page=true
skickas meddelanden till edge-servrarna för att öka antalet intryckningar.
FALSE: Närpage=false
, skickas inga meddelanden för att öka antalet inläsningar. Detta bör användas när du endast vill återge en komponent på en sida med ett erbjudande.Nu ska vi gå igenom några exempel på hur man anropar
triggerView()
funktionen i React för våra hypotetiska SPA:Länk: Hemwebbplats
Om vi som marknadsförare vill köra A/B-tester på hela hemsidan kanske vi vill kalla vyn"home":
function targetView() {
var viewName = window.location.hash; // or use window.location.pathName if router works on path and not hash
viewName = viewName || 'home'; // view name cannot be empty
// Sanitize viewName to get rid of any trailing symbols derived from URL
if (viewName.startsWith('#') || viewName.startsWith('/')) {
viewName = viewName.substr(1);
}
// Validate if the Target Libraries are available on your website
if (typeof adobe != 'undefined' && adobe.target && typeof adobe.target.triggerView === 'function') {
adobe.target.triggerView(viewName);
}
}
// react router v4
const history = syncHistoryWithStore(createBrowserHistory(), store);
history.listen(targetView);
// react router v3
<Router history={hashHistory} onUpdate={targetView} >
Länk: Produktwebbplats
Låt oss titta på ett exempel som är lite mer komplicerat. Som marknadsförare vill vi personalisera produktraden genom att ändra etikettfärgen"Price" till röd efter att en användare klickat på knappen Läs in mer.
function targetView(viewName) {
// Validate if the Target Libraries are available on your website
if (typeof adobe != 'undefined' && adobe.target && typeof adobe.target.triggerView === 'function') {
adobe.target.triggerView(viewName);
}
}
class Products extends Component {
render() {
return (
<button type="button" onClick={this.handleLoadMoreClicked}>Load more</button>
);
}
handleLoadMoreClicked() {
var page = this.state.page + 1; // assuming page number is derived from component's state
this.setState({page: page});
targetView('PRODUCTS-PAGE-' + page);
}
}
Länk: Utcheckning
Om marknadsförarna vill anpassa innehållet på webbplatsen beroende på vilken leveransinställning som har valts, kan en vy skapas för varje leveransinställning. När vi väljer Normal leverans får du i så fall namnet"Normal leverans". Om du väljer Express Delivery får du namnet "Express Delivery".
Nu kanske marknadsförarna vill göra ett A/B-test för att se om en ändring av färgen från blå till röd när expressleverans är valt kan öka konverteringen i stället för att behålla knappfärgen blå för båda leveransalternativen.
function targetView(viewName) {
// Validate if the Target Libraries are available on your website
if (typeof adobe != 'undefined' && adobe.target && typeof adobe.target.triggerView === 'function') {
adobe.target.triggerView(viewName);
}
}
class Checkout extends Component {
render() {
return (
<div onChange={this.onDeliveryPreferenceChanged}>
<label>
<input type="radio" id="normal" name="deliveryPreference" value={"Normal Delivery"} defaultChecked={true}/>
<span> Normal Delivery (7-10 business days)</span>
</label>
<label>
<input type="radio" id="express" name="deliveryPreference" value={"Express Delivery"}/>
<span> Express Delivery* (2-3 business days)</span>
</label>
</div>
);
}
onDeliveryPreferenceChanged(evt) {
var selectedPreferenceValue = evt.target.value;
targetView(selectedPreferenceValue);
}
}
at.js 2.x systemdiagram
Följande diagram hjälper dig att förstå arbetsflödet i at.js 2.x med Vyer och hur detta förbättrar SPA integrering. Om du vill få en bättre introduktion till de koncept som används i at.js 2.x kan du läsa Implementering av Single Page-program.
at.js kan också läsas in asynkront med ett alternativ som gör att fragment för att dölja kan implementeras på sidan.
Kundattribut skickas till profilarkivet i en gruppbearbetning.
Målinriktat innehåll på den aktuella sidan visas så snabbt som möjligt utan att du behöver flimra standardinnehållet.
Målanpassat innehåll för vyer som visas som ett resultat av användaråtgärder i en SPA som cachas i webbläsaren så att det kan tillämpas direkt utan ett extra serveranrop när vyerna aktiveras via
triggerView()
.Analysdata kan sedan visas i båda Analytics och Target via Analytics for Target (A4T)-rapporter.
Nu, var som helst triggerView()
är implementerat på din SPA, hämtas vyer och åtgärder från cachen och visas för användaren utan ett serveranrop. triggerView()
skickar även en meddelandebegäran till Target för att öka och registrera antalet intryckta.
triggerView()
anropas i SPA för att återge vyn och använda åtgärder för att ändra visuella element.Visual Experience Composer för enkelsidig app
När du har installerat .js 2.x och lagt till triggerView()
till webbplatsen använder du VEC för att köra A/B- och XT-aktiviteter. Mer information finns i Visual Experience Composer (SPA) med en sida.
triggerView()
implementerat.Använd TriggerView för att säkerställa att A4T fungerar korrekt med at.js 2.x och SPA
Se till att Analyser för Target (A4T) fungerar korrekt med at.js 2.x, och du måste skicka samma SDID i Target begäran och i Analytics begäran.
Som bästa praxis SPA
- Använd anpassade händelser för att meddela att något intressant händer i programmet
- Starta en anpassad händelse innan vyn börjar rendera
- Starta en anpassad händelse när vyn har återgetts
at.js 2.x lade till ett nytt API triggerView() funktion. Du bör använda triggerView()
att meddela at.js att en vy kommer att starta återgivningen.
För att se hur man kombinerar anpassade händelser, at.js 2.x och Analytics, ska vi ta ett exempel. I det här exemplet antas att HTML-sidan innehåller Visitor-API:t, följt av at.js 2.x, följt av AppMeasurement.
Låt oss anta att följande anpassade händelser finns:
at-view-start
- När vyn börjar renderaat-view-end
- När vyn har återgetts
För att vara säker på att A4T fungerar med at.js 2.x
Vystartshanteraren ska se ut ungefär så här:
document.addEventListener("at-view-start", function(e) {
var visitor = Visitor.getInstance("<your Adobe Org ID>");
visitor.resetState();
adobe.target.triggerView("<view name>");
});
Vysluthanteraren ska se ut ungefär så här:
document.addEventListener("at-view-end", function(e) {
// s - is the AppMeasurement tracker object
s.t();
});
at-view-start
och at-view-end
händelser. Dessa händelser ingår inte i anpassade at.js-händelser.I de här exemplen används JavaScript-kod, men allt detta kan förenklas om du använder en tagghanterare, till exempel taggar i Adobe Experience Platform.
Om ovanstående steg följs bör du ha en robust A4T-lösning för SPA.
Bästa praxis för implementering
Med API:erna för at.js 2.x kan du anpassa Target implementering på många sätt, men det är viktigt att följa den korrekta ordningen för åtgärder under den här processen.
Följande information beskriver den ordning i vilken du måste följa när du läser in ett Single Page-program för första gången i en webbläsare och för eventuella vyändringar som sker senare.
Operationsordning för inledande sidinläsning order
Om du har ett datalager rekommenderar vi att du läser in viktiga data som måste skickas till Target innan körningen av Target begäran. Detta gör att du kan använda targetPageParams
för att inkludera alla data som du vill använda för målinriktning.
När pageLoadEnabled
och viewsEnabled
är inställda på true in targetGlobalSettings, at.js begär automatiskt all VEC Target erbjudanden för dig i steg 2.
Observera att getOffers
kan även användas för att hämta VEC-erbjudanden efter att sidan har lästs in. Om du vill göra det ser du till att begäran innehåller execute>pageLoad
och prefetch>views
i API-anropet.
triggerView()
triggerView()
anropas efter Target begäran returneras och slutför användningen av erbjudandena i cachen. Du får bara utföra det här steget en gång per vy.triggerView({"page": false})
Ordning för åtgärder för SPA (ingen helsidesinläsning)
visitor.resetState()
getOffers()
APItriggerView()
triggerView()
triggerView({"page": false})
Utbildningsvideor
Följande videofilmer innehåller mer information:
Så här fungerar at.js 2.x
Se Så här fungerar at.js 2.x för mer information.
Implementera at.js 2.x i en SPA
Se Implementera Adobe Target at.js 2.x i ett enkelsidigt program (SPA) för mer information.
Använda VEC för SPA i Adobe Target
Se Använda Visual Experience Composer för Single Page Application (SPA VEC) i Adobe Target för mer information.