vue單頁面應用使用百度統計

  • 2019 年 11 月 21 日
  • 筆記

方案對比

有兩種方案,一種是在vue中實現,另一種是放到index.html中,與webpack相結合。

vue中實現

可以選擇放到view中的腳本中,也可以放到router的before router中。

與webpack結合

與webpack結合,實現開發時不統計。

在vue的script中

methods: {      showArticle () {          _hmt.push(['_trackPageview', '/article?id=' + this.article.id])          this.$router.push({          name: 'article',          query: {            id: this.article.id          }        })      }, ...

與webpack結合

<% if (htmlWebpackPlugin.options.prod) { %>          <script>          // 百度統計          // TODO:上傳到github時注釋掉,避免別人用這個部落格時,也統計到這裡來          // 自行更改src鏈接            var _hmt = _hmt || [];          (function() {            var hm = document.createElement("script");            hm.src = "https://hm.baidu.com/hm.js?your_code";            var s = document.getElementsByTagName("script")[0];            s.parentNode.insertBefore(hm, s);            // 百度統計            window.baidu = ({from = (window.urlParams.ADTAG || '-'), type = 'page', event = '-'}) => {              _hmt.push(['_trackEvent', from, type, event])            }          })();        </script>        <% } else { %>        <script>          var _hmt = {'push':function(event, url){            console.log('No push to baidu', event, url)          }}          // 百度統計          window.baidu = ({from = (window.urlParams.ADTAG || '-'), type = 'page', event = '-'}) => {            console.log('dev模式不上報百度統計:', from, type, event)          }        </script>         <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/av-min.js"></script>      <% } %>

emmm… 在我把程式碼寫完測試後才發現,原來的部落格系統早就把上報百度的邏輯寫全了,並且比自己的優雅