Implementieren von Einzelseiten-Apps
Herkömmliche Websites arbeiteten auf Basis von Page-to-Page-Navigationsmodellen (auch als Multi-Page-Anwendungen bekannt), bei denen Website-Designs eng an URLs gekoppelt waren und Übergänge von einer Webseite zu einer anderen einen Seitenladevorgang benötigten. Moderne Webanwendungen wie z. B. Einzelseiten-Apps (SPAs) nutzen stattdessen ein Modell, das die Rendering-Funktion der Browseroberfläche beschleunigt, wodurch oft keine Neuladungen der Seite erforderlich sind. Diese Erlebnisse werden oft durch Kundeninteraktionen wie Bildläufe, Klicks und Cursorbewegungen ausgelöst. Mit der Entwicklung neuer Ideen im modernen Web hat sich auch die Relevanz herkömmlicher allgemeiner Ereignisse (z. B. das Laden der Seite) zur Bereitstellung von Personalisierung und Experimenten verringert.
at.js 2.x bietet umfassende Funktionen, mit denen Ihr Unternehmen mithilfe von Client-seitigen Technologien der neuesten Generation Personalisierungen ausführen kann. Diese Version konzentriert sich auf die Verbesserung von at.js, um harmonische Interaktionen mit SPAs zu ermöglichen.
Hier einige Vorteile der Verwendung von at.js 2.x, die in früheren Versionen nicht verfügbar sind:
- Möglichkeit zur Zwischenspeicherung aller Angebote beim Seitenladen, um mehrere Server-Aufrufe auf einen einzelnen Server-Aufruf zu reduzieren
- Drastische Verbesserung der Erlebnisse Ihrer Endbenutzer auf Ihrer Site, da Angebote sofort über den Cache angezeigt werden, ohne dass durch herkömmliche Server-Aufrufe Latenz entsteht
- Einfache Einrichtung mit einmaliger, einzeiliger Codeeingabe und Entwicklerunterstützung, sodass Ihre Marketing-Experten A/B- und Erlebnis-Targeting(XT)-Aktivitäten über VEC in Ihrer SPA erstellen und ausführen können
Adobe Target und Einzelseitenanwendungen
Das Adobe Target VEC für SPA nutzt ein neues Konzept namens „Ansichten“: eine logische Gruppe visueller Elemente, die zusammen ein SPA-Erlebnis bilden. Eine SPA kann also als eine Reihe von Ansichten anstelle von URLs betrachtet werden, die je nach Benutzerinteraktion aufgerufen werden. Eine Ansicht umfasst in der Regel eine ganze Site oder eine Gruppe visueller Elemente innerhalb einer Site.
Um weiter zu erklären, was Ansichten sind, gehen wir zu dieser hypothetischen Online-E-Commerce-Site, die in React implementiert ist, und sehen uns einige Beispielansichten an. Klicken Sie auf die folgenden Links, um diese Website auf einer neuen Browser-Registerkarte zu öffnen.
Link: Startseite
Wenn wir zur Homepage navigieren, können wir sofort ein Hero-Bild sehen, das einen Osterverkauf bewirbt, sowie die neuesten Produkte, die auf der Site verkauft werden. In diesem Fall kann die gesamte Homepage als Ansicht definiert werden. Dies sollte beachtet werden, da wir darauf im Abschnitt Implementieren von Adobe Target weiter unten näher eingehen werden.
Link: Produktseite
Da uns die Produkte dieses Unternehmens interessieren, klicken wir auf den Link zu den Produkten. Ähnlich wie die Homepage kann die gesamte Produktseite als Ansicht definiert werden. Wir können diese Ansicht „Produkte“ nennen, genau wie der Pfadname in https://target.enablementadobe.com/react/demo/#/products)
.
Am Anfang dieses Abschnitts haben wir Ansichten als ganze Site oder sogar als eine Gruppe visueller Elemente auf der Site definiert. Wie oben gezeigt, können die vier auf der Site angezeigten Produkte auch gruppiert und als Ansicht betrachtet werden. Als Name für diese Ansicht käme „Produkte“ in Frage.
Klicken Sie auf die Schaltfläche „Mehr laden“, um weitere Produkte auf der Site zu erkunden. In diesem Fall ändert sich die Website-URL nicht. Hier kann auch nur die zweite Zeile der oben gezeigten Produkte als Ansicht angesehen werden. Der Name der Ansicht könnte also „PRODUKTSEITE-2“ lauten.
link: Checkout
Da uns einige Produkte auf der Site gefallen haben, beschließen wir, ein paar zu kaufen. Auf der Checkout-Site erhalten wir die Möglichkeit, zwischen dem normalen Versand oder der Expresszustellung zu wählen. Da eine beliebige Gruppe visueller Elemente auf einer Site als Ansicht definiert werden kann, können wir diese Ansicht „Versand-Voreinstellungen“ nennen.
Das Konzept Ansichten aber kann noch viel mehr ausgeweitet werden. Für Marketing-Experten, die den Inhalt einer Site je nach Versandpräferenz personalisieren möchten, gibt es die Möglichkeit, eine Ansicht für jede Versandpräferenz zu erstellen. Wenn wir in diesem Fall den normalen Versand auswählen, kann die Ansicht „Normaler Versand“ heißen. Wenn die Expresszustellung ausgewählt wird, kann die Ansicht „Expresszustellung“ lauten.
Ihre Marketing-Experten können auch einen A/B-Test durchführen, um zu sehen, ob die Änderung der Farbe von Blau auf Rot nach Auswahl der Expresszustellung die Konversion im Vergleich zu gleichbleibend blauer Button-Farbe für beide Versandoptionen steigert.
Implementieren von Adobe Target
Nachdem wir nun die Adobe Target Ansichten behandelt haben, können wir dieses Konzept nutzen, Target es Marketing-Experten zu ermöglichen, A/B- und XT-Tests über den VEC auf SPA durchzuführen. Dies erfordert eine einmalige Einrichtung durch den Entwickler. Führen wir die Schritte zur Einrichtung durch.
-
Installieren Sie at.js 2.x.
Zunächst müssen wir at.js 2 installieren.x. Diese Version von at.js wurde mit Blick auf SPA entwickelt. Frühere Versionen von at.js unterstützen keine Adobe Target Views und VEC für SPA.
Herunterladen von at.js 2.x über die Adobe Target-Benutzeroberfläche unter Administration > Implementation. at.js 2.x kann auch über Tags in Adobe Experience Platform bereitgestellt werden.
-
Implementieren von 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=de)
auf Ihren Sites.Nachdem Sie die Ansichten Ihrer SPA definiert haben, in denen Sie einen A/B- oder XT-Test ausführen möchten, implementieren Sie at.js 2.x
triggerView()
Funktion mit den als Parameter übergebenen Ansichten. Dadurch können Marketing-Experten VEC zum Entwerfen und Ausführen der A/B- und XT-Tests für diese Ansichten verwenden. Wenn dietriggerView()
-Funktion für diese Ansichten nicht definiert wurde, erkennt VEC die Ansichten nicht, sodass Marketing-Experten den VEC nicht zum Entwerfen und Ausführen von A/B- und XT-Tests verwenden können.note note NOTE Für die Ansichtsunterstützung in at.js muss viewsEnabled auf „true“ gesetzt sein, da ansonsten alle Ansichtsfunktionen deaktiviert sind. adobe.target.triggerView(viewName, options)
table 0-row-5 1-row-5 2-row-5 3-row-5 Parameter Typ Erforderlich? Validierung Beschreibung viewName Zeichenfolge Ja 1. Keine nachfolgenden Leerzeichen.
2. Darf nicht leer sein.
3. Der Name der Ansicht sollte für alle Seiten eindeutig sein.
4. Warnung: Der Anzeigename sollte nicht mit „/
“ beginnen oder enden. Dies liegt daran, dass der Kunde den Anzeigenamen im Allgemeinen aus dem URL-Pfad entnimmt. Für uns sind „home“ und „/home
“ unterschiedlich.
5. Warnung: Dieselbe Ansicht sollte nicht mehrmals hintereinander mit der Option{page: true}
ausgelöst werden.Geben Sie eine beliebige Zeichenfolge als Namen für Ihre Ansicht an. Dieser Ansichtsname wird im Modifications des VEC angezeigt, damit Marketer Aktionen erstellen und ihre A/B- und XT-Aktivitäten ausführen können. options Objekt Nein Optionen > Seite Boolesch Nein TRUE: Der Standardwert der Seite ist „wahr“. Bei page=true
werden Benachrichtigungen zur Erhöhung der Impressions-Anzahl an die Edge-Server gesendet.
FALSE: Bei derpage=false
werden keine Benachrichtigungen gesendet, um die Anzahl der Impressionen zu erhöhen. Dies sollte verwendet werden, wenn Sie nur eine Komponente auf einer Seite mit einem Angebot neu rendern möchten.Sehen wir uns nun einige Beispielanwendungsfälle an, in denen beschrieben wird, wie die
triggerView()
in React für unsere hypothetische E-Commerce-SPA aufgerufen wird:Link: Startseite
Wenn wir als Marketer A/B-Tests auf der gesamten Homepage durchführen möchten, bietet es sich an, die Ansicht „Home“ zu nennen:
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} >
Link: Produktseite
Sehen wir uns ein Beispiel an, das etwas komplizierter ist. Angenommen, wir möchten als Marketing-Experten die zweite Zeile der Produkte personalisieren, indem wir die Farbe des Preisschilds in Rot ändern, nachdem ein Benutzer auf die Schaltfläche Mehr laden geklickt hat.
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);
}
}
link: Checkout
Für Marketing-Experten, die den Inhalt einer Site je nach Versandpräferenz personalisieren möchten, gibt es die Möglichkeit, eine Ansicht für jede Versandpräferenz zu erstellen. Wenn wir in diesem Fall den normalen Versand auswählen, kann die Ansicht „Normaler Versand“ heißen. Wenn die Expresszustellung ausgewählt wird, kann die Ansicht „Expresszustellung“ lauten.
Ihre Marketing-Experten können auch einen A/B-Test durchführen, um zu sehen, ob die Änderung der Farbe von Blau auf Rot nach Auswahl der Expresszustellung die Konversion im Vergleich zu gleichbleibend blauer Button-Farbe für beide Versandoptionen steigert.
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);
}
}
Systemdiagramme in at.js 2.x
Die folgenden Diagramme helfen Ihnen dabei, den Arbeitsablauf von at.js 2.x mit Ansichten zu verstehen und wie dieser die Integration der SPAs verbessert. Eine bessere Einführung in die in at.js 2.x verwendeten Konzepte finden Sie unter Implementieren von Einzelseiten-Apps.
at.js kann auch asynchron mit einem optionalen Pre-hiding-Snippet geladen werden, das auf der Seite implementiert wird.
Kundenattribute werden in einem Batch-Prozess an den Profilspeicher übermittelt.
Die zielgerichteten Inhalte auf der aktuellen Seite werden so schnell wie möglich bereitgestellt, ohne dass Standardinhalte aufflackern.
Zielgerichtete Inhalte für Ansichten, die als Ergebnis von Benutzeraktionen in einer SPA, die im Browser zwischengespeichert wird, angezeigt werden. Die SPA kann sofort ohne zusätzlichen Serveraufruf angewendet werden, wenn die Ansichten durch
triggerView()
ausgelöst werden.Analytics-Daten können dann sowohl in Analytics als auch Target über Analytics für Target (A4T)-Berichte angezeigt werden.
Egal, wo triggerView()
in Ihrer SPA implementiert ist, werden die Ansichten und Aktionen aus dem Cache abgerufen und dem Benutzer ohne Serveraufruf gezeigt. triggerView()
sendet außerdem eine Benachrichtigungsanfrage an das Target-Backend, um Impressions-Zählungen zu erhöhen und aufzuzeichnen.
triggerView()
wird in der Einzelseiten-App aufgerufen, um eine Ansicht wiederzugeben und Aktionen anzuwenden, die visuelle Elemente ändern.Visual Experience Composer für Einzelseiten-Apps (SPAs)
Nachdem Sie die Installation von at.js 2.x abgeschlossen und triggerView()
zu Ihrer Site hinzugefügt haben, führen Sie mit dem VEC A/B- und XT-Aktivitäten aus. Weitere Informationen finden Sie unter Visual Experience Composer für Einzelseiten-Apps (SPAs).
triggerView()
implementiert ist.Verwenden Sie TriggerView, um sicherzustellen, dass A4T ordnungsgemäß mit at.js 2.x und SPA funktioniert
Um sicherzustellen, „Analytics for Target (A4T) ordnungsgemäß mit at.js 2.x funktioniert, müssen Sie dieselbe SDID in der Target-Anfrage und in der Analytics-Anfrage senden.
Best Practices in Bezug auf SPAs:
- Verwenden Sie benutzerspezifische Ereignisse für Benachrichtigungen, wenn in der Anwendung interessante Ereignisse auftreten.
- Auslösen eines benutzerspezifischen Ereignisses vor dem Start der Ansicht
- Auslösen eines benutzerspezifischen Ereignisses, wenn die Anzeige abgeschlossen wird
Zu at.js 2.x wurde eine neue API-TriggerView ()-Funktion hinzugefügt. Sie sollten at.js triggerView()
darüber informieren, dass eine Ansicht beginnt.
Um zu sehen, wie benutzerspezifische Ereignisse kombiniert werden, sehen wir uns in at.js 2.x und Analytics ein Beispiel an. In diesem Beispiel wird davon ausgegangen, dass die HTML-Seite die Besucher-API gefolgt von at.js 2.x und AppMeasurement enthält.
Nehmen wir an, dass die folgenden benutzerspezifischen Ereignisse vorhanden sind:
at-view-start
- Wenn die Ansicht beginntat-view-end
- Wenn die Ansicht abgeschlossen wird
Um sicherzustellen, dass A4T mit at.js 2.x arbeitet, vergewissern Sie sich von Folgendem:
Der Starthandler für die Ansicht sollte wie folgt aussehen:
document.addEventListener("at-view-start", function(e) {
var visitor = Visitor.getInstance("<your Adobe Org ID>");
visitor.resetState();
adobe.target.triggerView("<view name>");
});
Der Endhandler für die Ansicht sollte etwa wie folgt aussehen:
document.addEventListener("at-view-end", function(e) {
// s - is the AppMeasurement tracker object
s.t();
});
at-view-start
und at-view-end
auslösen. Diese Ereignisse sind nicht Teil von benutzerspezifischen at.js-Ereignissen.Obwohl diese Beispiele JavaScript-Code verwenden, kann all dies vereinfacht werden, wenn Sie einen Tag-Manager verwenden, z. B. Tags in Adobe Experience Platform.
Wenn die vorhergehenden Schritte eingehalten werden, sollten Sie eine robuste A4T-Lösung für SPAs haben.
Best Practices für die Implementierung
Mit den at.js 2.x-APIs können Sie Ihre Target auf viele Arten anpassen. Dabei ist es jedoch wichtig, die richtige Reihenfolge der Vorgänge zu befolgen.
In den folgenden Informationen wird die Reihenfolge der Vorgänge beschrieben, die Sie beim ersten Laden einer Einzelseitenanwendung in einem Browser und bei jeder Ansichtsänderung, die danach erfolgt, befolgen müssen.
Reihenfolge der Vorgänge beim ersten Laden der Seite order
Wenn Sie über eine Datenschicht verfügen, empfehlen wir, wichtige Daten, die an Target gesendet werden müssen, zu laden, bevor Sie die Target ausführen. Auf diese Weise können Sie targetPageParams
verwenden, um alle Daten einzubeziehen, die Sie für die Zielgruppenbestimmung verwenden möchten.
Wenn pageLoadEnabled
und viewsEnabled
in „targetGlobalSettings auf „true“ gesetzt sind fordert at.js in Schritt 2 automatisch alle VEC-Target an.
Beachten Sie, dass getOffers
auch zum Abrufen von VEC-Angeboten nach dem Laden der Seite verwendet werden kann. Stellen Sie dazu sicher, dass die Anfrage execute>pageLoad
und prefetch>views
im API-Aufruf enthält.
triggerView()
triggerView()
aufgerufen wird, nachdem die Target-Anfrage zurückgegeben wurde, und die Anwendung der Angebote auf den Cache abgeschlossen ist. Sie müssen diesen Schritt nur einmal pro Ansicht ausführen.triggerView({"page": false})
Reihenfolge der Vorgänge bei Änderung der SPA-Ansicht (kein vollständiges Neuladen der Seite)
visitor.resetState()
getOffers()
-APItriggerView()
triggerView()
triggerView({"page": false})
Schulungsvideos
Weitere Informationen dazu finden Sie in den folgenden Videos:
Funktionsweise von at.js 2.x
Weitere Informationen finden Sie unter Funktionsweise von at.js 2.x.
Implementieren von at.js 2.x in einer SPA
Weitere Informationen finden unter „Implementieren von at.js 2.x von Adobe Target in einer EinzelseitenAnwendung (SPA)“.
Verwenden des VEC für SPA in Adobe Target
Weitere finden Sie unter „Verwenden des Visual Experience Composer für Einzelseitenanwendungen (SPA VEC)Adobe Target".