Javascript 将Piwik用于单页应用程序

Javascript 将Piwik用于单页应用程序,javascript,analytics,single-page-application,matomo,fat-client,Javascript,Analytics,Single Page Application,Matomo,Fat Client,构建一个单页/fat客户端应用程序,我想知道使用 我想以一种在架构上合理的方式使用Piwik,并且将来可以在不同的库中重播 使用Piwik进行跟踪似乎有两个基本选项: 用命令填充全局\u paq数组,然后加载脚本(但我不清楚如何记录未来的“页面”视图或更改变量) 获取并使用var myTracker=Piwik.getTracker() \u paq方法: .getTracker()方法: 这些方法在功能上相同吗?对于单页应用程序,一个比另一个更可取吗?使用.getTracker的完整解决方案如

构建一个单页/fat客户端应用程序,我想知道使用

我想以一种在架构上合理的方式使用Piwik,并且将来可以在不同的库中重播

使用Piwik进行跟踪似乎有两个基本选项:

  • 用命令填充全局
    \u paq
    数组,然后加载脚本(但我不清楚如何记录未来的“页面”视图或更改变量)
  • 获取并使用var myTracker=Piwik.getTracker()
  • \u paq
    方法:
    .getTracker()
    方法:
    这些方法在功能上相同吗?对于单页应用程序,一个比另一个更可取吗?

    使用.getTracker的完整解决方案如下所示:


    仍然不确定使用
    \u paq
    数组是否更好。

    要使用完全独立于应用程序的跟踪库(如piwik),需要编写一个小类,将函数代理到piwik跟踪器。稍后,如果您从Piwik更改为XYZ,您可以简单地更新此代理类,而不是更新执行某些跟踪的多个文件


    异步代码对于您的应用程序来说是必须的(例如,对任何“track*”方法的调用都会发送请求)

    什么是“异步代码”?对我来说,这两种方法都可以异步实现,所以我感到困惑。在提出问题之前,我实际上仔细研究了这个问题。这个文档页面提到了正在考虑的两种方法。这个使用.getTracker的抽象很有效,在将应用程序与分析库隔离开来方面非常简洁,并且被放入了实时代码中。现在我想把这称为答案,但我想知道创作者是否有任何关于何时使用_paqvs.getTracker()的指导原则:)
    myApp.loadAnalytics = function() { /* dynamically insert piwik.php script */ }
    myApp.track = function(pageName) {
      window._paq = window._paq || [];
      _paq.push(['setDocumentTitle', pageName]);
      _paq.push(["trackPageView"]);
    }
    myApp.loadAnalytics()
    
    // Then, anywhere in the application, and as many times as I want (I hope :)
    myApp.track('reports/eastWing') // Track a "page" change, lightbox event, or anything else
    
    myApp.loadAnalytics = function() { /* dynamically insert piwik.php script */ }
    myApp.track = function(pageName) {
      myApp.tracker = myApp.tracker || Piwik.getTracker('https://mysite.com', 1);
      myApp.tracker.trackPageView(pageName);
    }
    myApp.loadAnalytics()
    
    // Then, anywhere in the application, and as many times as I want (I hope :)
    myApp.track('reports/eastWing') // Track a "page" change, lightbox event, or anything else