VorwortVor kurzem musste ich in meinem Projekt eine Tracking-Funktion implementieren. Nachdem ich die Tracking-Dokumente des Produkts sortiert hatte, stellte ich fest, dass es viele Szenarien für das Klick-Tracking gibt. Da wir den Alibaba Cloud SLS-Protokolldienst zum Verfolgen von Punkten verwenden, nutzen wir manuellen Einbruchscode zum Verfolgen von Punkten. Nachdem Sie sich für eine Einbettungsform entschieden haben, stehen Ihnen viele technische Implementierungsmethoden zur Verfügung. Welche ist besser? Ein kleiner Gedanke ... Ich habe mich dazu entschieden, eine Tracking-Anweisung zu kapseln, die bequemer zu verwenden ist, da die Anweisung eine feine Granularität aufweist und die wichtigsten Punkte direkt treffen kann, was für die oben genannten Geschäftsszenarien gut geeignet ist. UnterrichtsgrundlagenLassen Sie uns vorher die benutzerdefinierten Anweisungen von Vue überprüfen. Hier stellen wir nur die allgemein verwendeten Grundkenntnisse vor. Eine ausführlichere Einführung finden Sie in der offiziellen Dokumentation. Hook-Funktion
Hook-Funktionsparameter
Hier ist ein kleiner Trick, den ich mit Ihnen teilen möchte. Es gibt keinen Parameter im Hook-Funktionsparameter, der die aktuelle Instanz direkt abrufen kann, aber sie kann über vnode.context abgerufen werden. Dies wurde auch in meinem vorherigen Artikel zu Vue-Kenntnissen geteilt. Wenn Sie interessiert sind, können Sie es sich ansehen. TextKommen wir zum Punkt. Im Folgenden wird die Verwendung von Tracking-Anweisungen und deren interne Umsetzung vorgestellt. Verwendung und IdeenWenn ich etwas kapsele, bestimme ich im Allgemeinen zuerst, wie es verwendet werden soll, und beginne dann mit der Kapselung basierend auf der Verwendung. Dadurch wird die gesamte Idee klarer und Sie können bei der Definition der Verwendung auch die Benutzerfreundlichkeit berücksichtigen, um Nacharbeiten nach der Kapselung aufgrund unbefriedigender Verwendung zu vermeiden. Die vom Trackingpunkt gemeldeten Daten unterteilen sich in öffentliche Daten (Daten, die von jedem Trackingpunkt gemeldet werden müssen) und benutzerdefinierte Daten (optionale Zusatzdaten, die zusammen mit den öffentlichen Daten gemeldet werden). Dann werden die öffentlichen Daten intern einheitlich verarbeitet und die benutzerdefinierten Daten müssen von außen importiert werden. Es gibt also zwei Verwendungszwecke: Allgemeine Verwendung <div v-track:clickBtn></div> Benutzerdefinierte Daten <div v-track:clickBtn="{andere:'xxx'}"></div> Sie können sehen, dass das Tracking-Ereignis in Form eines Arguments übergeben wird. Zuvor habe ich auch gesehen, dass einige Freunde das Tracking-Ereignis in Form eines Werts gekapselt haben. Ich persönlich bevorzuge jedoch das Arg-Format, da dadurch leichter auf einen Blick erkennbar ist, um welches entsprechende vergrabene Ereignis es sich handelt. Darüber hinaus ist die gemeldete Datenstruktur ungefähr wie folgt: { Ereignisname: „clickBtn“ Benutzer-ID: 1, Benutzername: 'xxx', Daten: { andere: 'xxx' } } eventName ist der Ereignisname, der dem Einbettungspunkt entspricht. Die öffentlichen Daten befinden sich auf derselben Ebene wie diese und die benutzerdefinierten Daten werden in Daten platziert. erreichenDefinieren Sie eine track.js-Datei Importieren Sie SlsWebLogger aus „js-sls-logger“. Funktion getSlsWebLoggerInstance (Optionen = {}) { returniere neuen SlsWebLogger({ Gastgeber: '***', Projekt: '***', Protokollspeicher: `***`, Zeit: 10, Anzahl: 10, ...Optionen }) } Standard exportieren { installieren (Vue, {baseData = {}, slsOptions = {}) { const slsWebLogger = getSlsWebLoggerInstance(slsOptions) // Methode zum Abrufen öffentlicher Daten let getBaseTrackData = typeof baseData === 'function' ? baseData : () => baseData let baseTrackData = null const Spur = { Name: "Spur", eingefügt (el, Bindung) { el.addEventListener('klicken', () => { wenn (!binding.arg) { console.error('Der Name des Track slsWebLogger-Ereignisses ist ungültig') zurückkehren } wenn (!baseTrackData) { baseTrackData = getBaseTrackData() } baseTrackData.eventName = Bindung.arg // Benutzerdefinierte Daten let trackData = binding.value || {} const submitData = Object.assign({}, baseTrackData, {data: trackData}) // Bericht slsWebLogger.send(submitData) wenn (Prozess.env.NODE_ENV === 'Entwicklung') { console.log('slsWebLogger verfolgen', sendeDaten) } }) } } Vue.Direktive(Track.name, Track) } } Die Kapselung ist relativ einfach und bewirkt im Wesentlichen zwei Dinge: Erstens fügt sie dem an die Anweisung gebundenen DOM ein Klickereignis hinzu und zweitens verarbeitet sie die gemeldeten Daten. Beim Einkapseln von Tracking-Anweisungen werden öffentliche Daten über baseData übergeben, was die Vielseitigkeit erhöhen kann. Der zweite Parameter sind einige Konfigurationsparameter der Berichtsplattform. Registrieren Sie die Anweisung zum Zeitpunkt der Initialisierung: Store aus „src/store“ importieren Track aus „Lib/Direktive/Track“ importieren Funktion getBaseTrackData () { let userInfo = store.state.Benutzer.user_info // Öffentliche Daten const baseTrackData = { userId: userInfo.user_id, // Benutzer-ID Benutzername: userInfo.user_name // Benutzername} baseTrackData zurückgeben } Vue.use(Track, {baseData: getBaseTrackData}) Wenn Vue.use aufgerufen wird, sucht es automatisch nach der aufzurufenden Installationsfunktion und registriert die Direktive schließlich global. Für mehr VielseitigkeitWenn es neben dem Klick-Tracking auch Szenarien wie das Stay-Tracking gibt, sind die obigen Anweisungen nicht anwendbar. Hierzu kann ein manuelles Anrufformular hinzugefügt werden. Standard exportieren { installieren (Vue, {baseData = {}, slsOptions = {}) { // ... Vue.Direktive(Track.name, Track) // Vue.prototype.slsWebLogger manuell aufrufen = { sende (TrackData) { wenn (!trackData.eventName) { console.error('Der Name des Track slsWebLogger-Ereignisses ist ungültig') zurückkehren } const submitData = Object.assign({}, getBaseTrackData(), trackData) slsWebLogger.send(Daten übermitteln) wenn (Prozess.env.NODE_ENV === 'Entwicklung') { console.log('slsWebLogger verfolgen', sendeDaten) } } } } Diese Art der Anbindung an den Prototyp kann hierdurch bequem bei jeder Komponenteninstanz aufgerufen werden. Standard exportieren { // ... erstellt () { dies.slsWebLogger.send({ //... }) } } ZusammenfassenIn diesem Artikel wird der Vorgang der Kapselung von Tracking-Anweisungen erläutert. Die Kapselung ist nicht schwer zu erreichen. Es gibt hauptsächlich zwei Formen. Das Klick-Tracking wartet auf Klickberichte, indem es DOM-Klickereignisse bindet, während in anderen Szenarien manuelle Aufrufe vorgesehen sind. Ich möchte hauptsächlich die Idee der Kapselung und ihre Verwendung aufzeichnen. Auch die Tracking-Point-Implementierung wurde betriebsspezifisch angepasst. So kann beispielsweise die Registrierungs-Tracking-Point-Anweisung die Konfigurationsparameter der Reporting-Plattform akzeptieren. Schließlich sind die Menschen lebendig und der Code ist tot. Solange es den Geschäftsanforderungen entspricht und gewartet werden kann, können Sie es auf jede für Sie angenehme Weise verwenden. Damit ist dieser Artikel über die Wissenszusammenfassung der Tracking-Anweisungen, die Vue-Ingenieure kapseln müssen, abgeschlossen. Weitere relevante Vue-Kapselungs-Tracking-Anweisungen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung der allgemeinen Verwendung von Pseudoklassen vor und nach in CSS3
>>: 5 Tipps zum Schreiben von CSS, um Ihren Stil standardisierter zu gestalten
Code kopieren Der Code lautet wie folgt: li {Brei...
In diesem Artikel werden anhand von Beispielen di...
conda aktualisieren conda pip installieren tf-nig...
Inhaltsverzeichnis 1. Einige Konzepte von Tomcat ...
Mixins bieten eine sehr flexible Möglichkeit, wie...
Vorwort Die Anwendungs- und Lernumgebung von MySQ...
Typische MySQL-Szenarien: Schnittmenge und Differ...
Vorwort Im aktuellen JavaScript gibt es kein Konz...
Windows: Unterstützt NTFS, FAT Linux unterstützt ...
Bevor wir weiter analysieren, warum der MySQL-Dat...
Einführung Wenn wir die MySQL-Datenbank verwenden...
Gehen Sie zunächst zum Herunterladen auf die offi...
In diesem Artikel wird die spezifische Methode zu...
Heute möchte ich einige sehr nützliche HTML-Tags z...
Frage: Beim Installieren Nginx in Docker ist der ...