vue-gtag
產品部/上德/ 2023-04-21
前端讀書會
B L U E P L A N E T
Google代碼(gtag.js)
註:要留意不要看錯文件看到 舊版ga (Universal Anaytics)
2
2
B L U E P L A N E T
vue-gtag
3
3
B L U E P L A N E T
幾個要注意的事情
4
4
B L U E P L A N E T
安裝vue-gtag
import { createApp } from "vue";
import App from "./App.vue";
import VueGtag from "vue-gtag";
�createApp(App).use(VueGtag, {
config: { id: "GA_MEASUREMENT_ID" }
}).mount("#app");
5
npm add vue-gtag
5
B L U E P L A N E T
Options API & Composition API寫法差異
export default {
name: 'MyComponent',
� methods: {
login () {
this.$gtag.event('login', { method: 'Google' })
}
}
}
6
import { event } from 'vue-gtag'
�export default {
name: 'MyComponent',
� setup() {
const login = () => {
event('login', { method: 'Google' })
}
return {
login
}
}
}
6
B L U E P L A N E T
Bootstrap options
GDPR保護的網頁需在使用者同意之下才能進行追蹤。設定 bootstrap為 true以控制執行的時間點
7
import { createApp } from "vue";
import VueGtag from "vue-gtag";
�createApp(App).use(VueGtag, {
bootstrap: false,
config: {
id: "GA_MEASUREMENT_ID",
},
}).mount("#app");
import { bootstrap } from 'vue-gtag'
�export default {
name: 'MyComponent',
� methods: {
enablePlugin () {
bootstrap().then((gtag) => {
// all done!
})
}
}
}
7
B L U E P L A N E T
Auto tracking
8
app.use(VueGtag, {
config: {
id: "GA_MEASUREMENT_ID",
},
}, router); // <----- add your router here
8
B L U E P L A N E T
Screenview
9
app.use(VueGtag, {
appName: 'My application',
pageTrackerScreenviewEnabled: true,
config: {
id: "GA_MEASUREMENT_ID",
},
}, router);
9
B L U E P L A N E T
Page tracker template
10
app.use(VueGtag, {
pageTrackerTemplate(to) {
return {
page_title: 'amazing page',
page_path: to.path
}
},
config: {
id: "GA_MEASUREMENT_ID",
},
}, router);
10
B L U E P L A N E T
Multiple domain tracking
11
import { createApp } from "vue";
import App from "./App.vue";
import VueGtag from "vue-gtag";
�createApp(App).use(VueGtag, {
includes: [
{ id: 'GA_MEASUREMENT_ID_2' },
{
id: 'GA_MEASUREMENT_ID_3',
params: {
anonymize_ip: true
}
}
],
config: { id: "GA_MEASUREMENT_ID_1" }
}).mount("#app");
export default {
name: 'MyComponent',
� methods: {
login () {
this.$gtag.event('login', { method: 'Google' })
}
}
}
11
B L U E P L A N E T
Plugin hooks
12
import { createApp } from "vue";
import App from "./App.vue";
import VueGtag from "vue-gtag";
�createApp(App).use(VueGtag, {
config: { id: "GA_MEASUREMENT_ID" },
onReady () {
// ready
},
onBeforeTrack () {
// before!
},
onAfterTrack () {
// after!
}
}).mount("#app");
12
B L U E P L A N E T
screenview
13
export default {
name: 'MyComponent',
� methods: {
track () {
this.$gtag.screenview({
app_name: 'MyApp',
screen_name: 'Home page',
})
}
}
}
13
B L U E P L A N E T
pageview
14
export default {
name: 'MyComponent',
� methods: {
track () {
this.$gtag.pageview({ page_path: '/about' })
this.$gtag.pageview('/about')
this.$gtag.pageview(this.$route)
}
}
}
14
B L U E P L A N E T
pageView 和 screenView的測試結果
15
15
B L U E P L A N E T
Event
16
export default {
name: 'MyComponent',
� methods: {
track () {
this.$gtag.event(<action>, {
'event_category': <category>,
'event_label': <label>,
'value': <value>
})
}
}
}
16
B L U E P L A N E T
事件的測試結果
17
17
B L U E P L A N E T
exception
18
export default {
name: 'MyComponent',
� methods: {
track () {
this.$gtag.exception({
'description': 'error_description',
'fatal': false
})
}
}
}
18
B L U E P L A N E T
query
19
export default {
name: 'MyComponent',
� methods: {
track () {
this.$gtag.query('event', 'screen_view', {
app_name: 'MyApp',
screen_name: 'Home page',
})
}
}
}
19
B L U E P L A N E T
安裝在Nuxt上
20
yarn add –dev vue-gtag
// plugins/vue-gtag.client.js
import VueGtag from 'vue-gtag'�export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.use(VueGtag, {
config: {
id: 'GA_MEASUREMENT_ID',
},
}, nuxtApp.$router)
})
20
B L U E P L A N E T
Q&A