码迷,mamicode.com
首页 > 其他好文 > 详细

在像Angular2这样的SPA应用中使用Google Analytics的方法

时间:2017-10-18 09:57:51      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:any   cto   function   应用   angular   tin   out   entry   tun   

Angular2のようなシングルページアプリケーションでGoogleアナリティクスを使う方法

如何在像Angular2这样的SPA应用中使用Google Analytics?

试着调查了一下。

由于SPA的特性,在每页中粘贴Analytics代码会出岔子的。那么怎么做呢?

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>LotsJOY</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
  <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-72706518-3‘, ‘auto‘);
    // ga(‘send‘, ‘pageview‘);

  </script>


</head>
<body>
  <app-root>Loading...</app-root>
</body>
</html>

首先,在index.html的<head>中加上Analytics代码。

接着,在app.component.ts中追加这样的代码:

import { Component } from ‘@angular/core‘;
import {Router, NavigationEnd} from "@angular/router";
declare var ga: any;
@Component({
  selector: ‘app-root‘,
  templateUrl: ‘./app.component.html‘,
  styleUrls: [‘./app.component.css‘]
})
export class AppComponent {
 constructor(public router: Router){
   router.events.distinctUntilChanged((previous: any, current: any) => {
     if(current instanceof NavigationEnd) {
       return previous.url === current.url;
     }
     return true;
   }).subscribe((x: any) => {
   //  console.log(‘router.change‘, x);
     ga(‘send‘, ‘pageview‘, x.url);
   });
 }
}
declare var ga: any; 叫作环境声明。将其他的组件(Web浏览器和既存的JavaScript库)提供的变量和函数等等传达给TypeScript的编译器。
这个是添加既存的JavaScript库的静态类型,使得在TypeScript中可以使用它的意思。
也就是,声明在TypeScript中可以使用Google Analytics代码中的ga变量。

router.events.distinctUntilChanged这部分是检测路由上的变化,确认路由确实变化后,向Google发送新的路径。

 

在像Angular2这样的SPA应用中使用Google Analytics的方法

标签:any   cto   function   应用   angular   tin   out   entry   tun   

原文地址:http://www.cnblogs.com/niaomingjian/p/7684975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!