Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kaelzhang/hippo
Simple analytics client.
https://github.com/kaelzhang/hippo
Last synced: 17 days ago
JSON representation
Simple analytics client.
- Host: GitHub
- URL: https://github.com/kaelzhang/hippo
- Owner: kaelzhang
- License: mit
- Created: 2013-10-23T09:54:24.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2014-08-06T02:51:53.000Z (over 10 years ago)
- Last Synced: 2024-04-15T12:32:59.565Z (7 months ago)
- Language: JavaScript
- Size: 297 KB
- Stars: 4
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
# hippo
> Dianping Web Analytics
### 如果阅读完文档之后,还有任何疑问,可以直接在项目中提交新 [issue](http://code.dianpingoa.com/f2ei/hippo/issues) 来提问。
## Synopsis
示例代码见 [这里](http://i1.static.dp/demo/hippo.html)
### 基本语法
```
_hip.push(action);
```例如:发送一个 mv
```
_hip.push(['mv', {...}]);
```## Actions
### 发送 module view 请求
```
['mv', data_object]
```#### 示例
```
_hip.push(['mv', {
module: '6_rec_fujin',
action: 'click'
}]);
```### 发送 page view 请求
```
['pv', data_object]
```请 **特别注意**,大部分情况下,只要页面中加入 hippo,会自动发送一个 pv 请求,因此一般情况下,不需要主动调用该 action。
如果要禁止页面自动发送,请参见下面条目。
### 设置初始 pv 的参数
设置自动发送的 pv 请求的数据。请注意,这个方法只会被运行一次。
```
['_setPVInitData', data_object]
```### 禁止自动发送 pv
```
['_autoPV', false]
```请注意,如果要让该代码生效,需要在 hippo.js 加载前,将其加入到初始化代码中。
### 禁止自动进行页面性能统计
```
['_autoPageTiming', false]
```
请注意,如果要让该代码生效,需要在 hippo.js 加载前,将其加入到初始化代码中。### 设置页面的 page_id
```
['_setPageId', page_id]
```若新业务无法确定自己的 page_id,则该代码行都不出现.
### 设置页面的 city_id
```
['_setCityId', city_id]
```城市 id,如上海的 city_id 为 1。有些业务跟城市无关,如后台等,则该代码行可不出现。
### 设置页面的 shop_type
_deprecated_
```
['_setShopType', shop_type]
```目前,我们的网站上仅有 Category=1000 的页面,才会有 shop_type,因此,对于其他的页面,shop_type 可以传 0,或者该代码行都不出现.
### 强制指定页面的地址
```
['_setHref', href]
```
##### 说明对于普通页面,请 **慎用** 该方法。
### 强制指定页面的 referrer
注意拼写:
```
['_setReferrer', referrer]
```
##### 说明1.
如果你的页面,使用了某些 JavaScript MVC 框架来进行页面的渲染和路由,并且使用了 hash 来进行路由的操作,那么 `'_setReferrer'` 和 `'_setHref'` 方法会帮到你。
但是 `referrer` 以及 `href` 的取值需要业务自己来管理。2.
对于普通页面,请 **慎用** 该方法。### 设置服务端 GUID
```
['_setGuid', guid]
```Guid 及 request id 被用于分析用户页面访问链路。
**deprecated** 请使用 `['_setCustomConst', 'serverguid', guid]` 代替。
### 设置页面的 Request ID
```
['_setRequestId', requestId]
```**deprecated** 请使用 `['_setCustomConst', 'reqid', requestId]` 代替。
### 设置全局的公用常量
```
['_setCustomConst', key, value]
```执行该方法后,页面中的每个 pv 和 mv 请求都会包含该参数。
## 初始化
### 特别说明
若您的业务,已经调用了页头服务(dp-common-web),那么在使用上,可以跳过 \<1\> 与 \<2\> 的步骤,因为页头服务已经默认包含 hippo.js 与 初始化的代码。
### 1. 页面顶部 JavaScript
var _hip = [
['_setPageId', page_id],
['_setCityId', city_id],
['_setShopType', shop_type],
['_setPVInitData', page_initial_data]
];
上面的初始化代码片段,必须位于 web 页面源代码的 标签内,建议放置到页面所有的 JavaScript 代码块之前。
#### 说明
1. `_hip` 数组中,可以使用上面 "actions" 章节中说明的 action。
2. 若所有的参数,在某个业务中均不需要设置,则代码为:```
var _hip = [];
```
#### 原理
1. 当 hippo 的 JavaScript 文件被运行前,`_hip` 是一个 JavaScript 数组,我们可以使用数组的 `push` 方法给它加入更多的项(action)。这个时候 `_hip` 数组起到了一个简易的队列的作用。
2. 当 JS 文件被运行之后,`_hip.push` 会变为一个自定义的函数,用来执行 hippo 相关的逻辑,同时原来的 `_hip` 数组中的项,会作为新的 `_hip.push` 函数的参数被执行。### 2. 依赖的 JS 文件
A. 若您所负责的业务访问量较大,建议依赖 dp-common,并使用 <@ava.staticResource> tag 来引入 "/hls/hippo2.js"
B. 若您所负责的业务生命周期较短,则可直接调用 http://i1.dpfile.com/hls/hippo2.js
## 参数说明
### data_object
#### 参考文档
[https://docs.google.com/a/dianping.com/spreadsheet/ccc?key=0At4dklODGW9UdFg5VHJBdmo3YlZ0VVpkRFh6cFNyQkE#gid=2](https://docs.google.com/a/dianping.com/spreadsheet/ccc?key=0At4dklODGW9UdFg5VHJBdmo3YlZ0VVpkRFh6cFNyQkE#gid=2)
#### 说明
`data_object` 是一个 JavaScript 数据对象,类似于 HashMap,
它是由多个 key-value 对组成的,比如:```
{
module: '1_rec_qita',
index: 1,
action: 'click'
}
```其中
##### key: module
在一个 hippo 打点中,module 是一个很重要的 key,它用于对当前的 hippo 打点起到“身份验证”的作用,在进行数据统计的时候,大多时候会首先根据 module 来进行筛选。所以,在收到 hippo 打点需求的时候,首先应当确定该打点的 module 名。
module 名需要开发,BI,与需求方进行约定。
##### 其他 key
其他key,一般为描述性的键,这些键的含义及用法,可以参考上面的文档。## 使用场景
这里说明几种使用场景,来说明最常用的使用方式,如果有任何疑问,可以到 [这里](http://code.dianpingoa.com/f2ei/hippo/issues) 创建新 issue 来提问。
### 使用 dp-common-web 服务
如果你的业务使用了 dp-common-web,并且使用了一些预先配置的页头模版,那么 **大部分情况下**,你不用进行任何 hippo 的配置。
这种情况下,请跳过后面的内容。
### 最常用的 Hippo 初始化代码
常用的情况下,你不用进行任何的设置,但是最好在页面最顶部加入如下代码:
```
var _hip = [];
```
这样做的好处是,当 hippo 的 JavaScript 文件没有加载到的时候,某些用户行为仍然能够被 hippo 记录。
### Request Id 与 Guid
Guid 及 request id 被用于分析用户页面访问链路。
```
var _hip = [
// 若这里已经有其他定义了,请在 `_hip` 这个数组中新增
[ '_setCustomConst', 'reqid', 'xxxxxxx' ],
[ '_setCustomConst', 'serverguid', 'xxxxxxx' ]
];
```关于如何获取到相关的参数,请查看后端相关文档。