构建单页/胖客户端应用程序,我想知道使用http://piwik.org/进行包含和跟踪的最佳做法是什么
我想以一种体系结构合理的方式使用Piwik,并且将来可以用不同的库替换。
使用Piwik进行跟踪似乎有两个基本选项:
_paq
数组,然后加载脚本(我不清楚如何记录未来的“页面”视图或更改变量)var myTracker = Piwik.getTracker()
_paq
方法: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
.getTracker()
方法: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
这些方法在功能上是否相同?对于单页应用程序,是否优先于另一个?
答案 0 :(得分:1)
使用.getTracker的完整解决方案如下所示: https://gist.github.com/SimplGy/5349360
仍然不确定使用_paq
数组是否更好。
答案 1 :(得分:1)
要使用跟踪库(例如piwik)完全独立于您的应用程序,您需要编写一个小类,将函数代理到Piwik跟踪器。稍后如果从Piwik更改为XYZ,您只需更新此代理类,而不是更新执行某些跟踪的多个文件。
异步代码是您应用的必备代码(例如,对任何'track *'方法的调用都会发送请求)