最方便的方法,莫過於使用vue-analytics
:https://github.com/MatteoGabriele/vue-analytics。html
包是有了,但是真正使用起來會發現Google Analytics
(下稱GA
)可能沒檢測到或者出現漏統計的問題。本文的主題,就是討論幾個基本的檢查點和說明下GA的基本用法,確保GA
正常工做。vue
本文分爲如下幾部分:webpack
GA
GA
基本用法:頁面跟蹤與事件跟蹤GA
是否正常工做vue-cli
工程添加GA
的詳細步驟GA
必須按照Google
官方要求,將如下代碼放到html
文件,而且應該放在</head>
以前:git
<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-XXX', 'auto'); // 將`UA-XXX`換成本身的ID ga('send', 'pageview'); </script>
其餘方式可讓GA代碼運行起來,可是會引入一些問題。好比咱們使用了vue的狀況下,很天然地會想能不能直接在vue完成初始化,不想要去修改html。可是實測會出現2個問題。github
第1個是GA的後臺檢測不到,相似以下的提示:
web
第2個是Google其餘的產品,好比Ad Words
,與GA
配合,也會要求GA代碼放在</head>
以前才能工做。chrome
綜上,在初始化上目前只能老實按照Google
的方法。vue-cli
事件跟蹤與事件跟蹤是GA最基本最主要的用法。async
通常的網站,只須要在html
中加個GA的代碼就能完成頁面跟蹤了,可是對於SPA
來講並不行,由於路由之間的跳轉並無刷新頁面,GA感知不到,所以須要手動觸發。在vue-cli
的工程中,可以使用以下代碼簡單處理:ide
router.afterEach((to, from) => { ga('set', 'page', to.path) ga('send', 'pageview') })
推薦使用vue-analytics
,按照官方指導處理,可省不少事,不然須要本身手動再處理首次進入重複計數和GA不存在等異常狀況。
import Vue from 'vue' import router from './router' import VueAnalytics from 'vue-analytics' Vue.use(VueAnalytics, { id: 'UA-XXX-X', router, autoTracking: { pageviewOnLoad: false } })
連接:https://github.com/MatteoGabriele/vue-analytics/blob/master/docs/page-tracking.md
原生的代碼是
ga.event('category', 'action', 'label', 123)
若是用vue-analytics則是:
this.$ga.event('category', 'action', 'label', 123)
連接:https://github.com/MatteoGabriele/vue-analytics/blob/master/docs/event-tracking.md
值得一提的是事件四個參數的設置:
一般來講,須要檢查幾個點以確認GA有正常工做:
要檢查這幾點,最方便的是使用Chrome的Tag Assistant插件。下面分步驟說明如何用該插件作檢查。
1.下載Chrome插件:Tag Assistant(https://chrome.google.com/webstore/detail/tag-assistant-by-google/kejbdjndbnbjgmefkgdddjlbokphdefk)
2.如何檢查初始化:點擊下面的Record,而後刷新頁面,而後便可看到當前加載的TAG。Google Analytics只是其中一種,其餘還有像Remarketing Tag(再營銷代碼)等等,以下圖所示,這裏咱們只關心Google Analytics。若是是綠色的表示正常,不然就要根據提示排查下問題。
3.如何檢查PageView和Event:點擊Goole Analytics
那個選項,可看到GA的詳細信息。若是有發送PageView或者Event,在下面可看到統計。
3.1 Pageview的具體信息:以下圖所示,發出了一個/login頁面的PageView,若是有多個不一樣的PageView,點左右可一一切換。我通常使用這個面板確認是否頁面加載後發出了多個相同的PageView,以及路由切換時是否有發出PageView。
3.2 event的具體信息:event的查看方法與pageview相似,就是內容變成event的category, action, label, value等信息而已。我主要用它來確認事件是否有發出以及參數是否正確。
vue-cli
的工程添加GA
代碼的詳細步驟config/prod.env.js
,添加GA代碼ID:'use strict' module.exports = { NODE_ENV: '"production"', GA: `"UA-113937480-1"` }
build/webpack.prod.conf.js
找到HtmlWebpackPlugin
,最後添加了ga
選項:new HtmlWebpackPlugin({ filename: process.env.NODE_ENV === 'testing' ? 'index.html' : config.build.index, template: 'index.html', inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true // more options: // https://github.com/kangax/html-minifier#options-quick-reference }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency', favicon: './static/bitbug_favicon.ico', ga: env.GA // 添加ga選項,以便在index.html中能夠引用 }),
index.html
,在</head>
以前添加,特別注意它的GA的ID是從配置中讀取而不是寫死的<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', <%= htmlWebpackPlugin.options.ga %>, 'auto'); ga('send', 'pageview'); </script>
src/main.js
引入vue-analytics
,參考源碼import App from './App' import router from './router' import VueAnalytics from 'vue-analytics' // GA初始化 if (process.env.GA) { Vue.use(VueAnalytics, { id: process.env.GA, // 從配置中讀取 disableScriptLoader: true, // 必須在html中完成初始化,這裏顯式禁止去下載ga腳本 router, // 確保路由切換時能夠自動統計 autoTracking: { pageviewOnLoad: false // 當經過網址進來時已經GA在初始化時就發起一次pageview的統計,這裏不要重複統計 } }) }