【发布时间】:2013-10-31 09:46:14
【问题描述】:
我正在开发一个大型电子商务应用程序。在此类应用程序中,跟踪是一个巨大的问题。了解用户是否使用功能 x 或单击按钮 y 等至关重要。
例如,假设您可以通过单击标题上的搜索按钮或通过应用程序宽键盘命令 CTRL + S 来调出搜索。
现在,如果我们想跟踪此类事情,最好的处理方法是什么。我在(这里使用伪JavaScript,但语言并不重要)之间思考和犹豫:
1.只需直接在动作发生的地方进行跟踪:
function searchButtonClicked{
//this event will be raised anyway to be catched somewhere else to bring up the search
raiseEvent('searchButtonClicked');
//now directly track the stuff here
trackingService.trackEvent('searchButtonClicked');
}
还有……
2。只需为操作引发事件,然后在 trackingService 中捕获这些事件
function searchButtonClicked{
//this event will be raised anyway to be catched somewhere else to bring up the search
raiseEvent('searchButtonClicked');
}
...在 trackingService 中的某个地方
onEvent('searchButtonClicked', function(){
track('searchButtonClicked');
});
所以乍一看 2. 对我来说似乎更好一点,因为没有一个组件需要依赖于 trackingService。他们甚至不知道存在跟踪。此外,一些现有的事件可能可以重用。然而,这只适用于一小部分事件。大多数事件或多或少都是为了跟踪而引发的。所以我想知道那层抽象是否真的有必要?
这种跟踪似乎与记录没有太大区别,我认为直接在事件发生的地方记录是公认的做法,不是吗?
【问题讨论】:
标签: javascript design-patterns logging architecture google-analytics