@analytics/snowplow

中文文档
0.3.3发布于 2022/03/18MITESM + CJS近 30 天下载 7835

浏览器和节点的“分析”模块的雪花集成

中文使用文档
文档目录10 节
  1. 安装
  2. 如何使用
  3. 支持的平台
  4. 浏览器使用量
  5. 浏览器 API
  6. 浏览器配置选项
  7. 服务器侧用法
  8. 服务器侧 API
  9. 服务器侧配置选项
  10. 其他例子

分析的雪花插件

与 雪花分析 页:1 分析 软件包.

查看文件

单击以扩展

安装

安装 analytics 财务报告和审定财务报表 @analytics/snowplow 软件包

npm install analytics
npm install @analytics/snowplow

如何使用

这个 @analytics/snowplow 软件包在 浏览器 财务报告和审定财务报表 在节点.js的服务器侧。要使用、安装软件包,在您的工程中包含并初始化插件 分析。 。 。 .

以下为如何使用浏览器插件的例子.

import Analytics from 'analytics'
import snowplowPlugin from '@analytics/snowplow'

const analytics = Analytics({
  app: 'awesome-app',
  plugins: [
    // Minimal recommended configuration
    snowplowPlugin({
      name: 'snowplow',
      collectorUrl: 'collector.mysite.com',
      trackerSettings: {
        appId: 'myApp'
      }
    })
  ]
})

/* Track a page view */
// Enable some automatic tracking before page event
analytics.on('initialize:snowplow', ({ instance }) => {
  instance.plugins.snowplow.enableActivityTracking(10, 10)
  instance.plugins.snowplow.enableLinkClickTracking()
})

// Track page
analytics.page()

// or Track page view with additional entities
analytics.page({
  contexts: [
    {
      schema: 'iglu:com.acme/blog_post/jsonschema/1-0-0',
      data: {
        title: 'Re-thinking the structure of event data',
        category: 'Data Insights',
        author: 'Cara Baestlein',
        datePublished: '2020-01-24'
      }
    }
  ]
})

/* Track a custom event */
// Track structured event
analytics.track('playedVideo', {
  category: 'Videos',
  label: 'Fall Campaign',
  value: 42
})

// or Track Self Describing event
analytics.track('selfDescribingEvent', {
  schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
  data: {
    id: 42,
    title: 'Fall Campaign'
  }
})

// or Track Self Describing event with additional entities
analytics.track('selfDescribingEvent', {
  schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
  data: {
    id: 42,
    title: 'Fall Campaign',
    videoTimestampInMs: 1104
  },
  contexts: [
    {
      schema: 'iglu:com.acme/product/jsonschema/1-0-0',
      data: {
        id: 'f9cb6cb6-5ca8-47a6-9035-d9c6ac13029e',
        category: 'clothing',
        subCategory: 'socks',
        price: 3.99
      }
    }
  ]
})

// or Track Enchanced Ecommerce event with product context
analytics.track('EnhancedEcommerceProductContext', {
  id: 'P12345',
  name: 'Android Warhol T-Shirt',
  list: 'Search Results',
  brand: 'Google',
  category: 'Apparel/T-Shirts',
  variant: 'Black',
  quantity: 1
})
analytics.track('EnhancedEcommerceAction', {
  action: 'add'
})

/* Identify a visitor */
analytics.identify('user-id-xyz')

初始化后 analytics 与 snowplowPlugin 插件中, 数据会被传送到雪花分析器中 分析. p, (中文(简体) ), 分析. track,或 分析 识别 被调用.

见 其他执行实例 在您的项目中使用更多细节 .

支持的平台

这个 @analytics/snowplow 软件包在 浏览器 财务报告和审定财务报表 在节点.js的服务器侧

浏览器使用量

Snowplow Analytics客户端浏览器插件与这些分析的api方法合作:

  • 分析. p - 将页面视图输入斯诺普洛分析
  • 分析. 重置 - 为雪花分析值重置浏览器存储 cookie 和本地存储
  • 分析. track - 追踪自定义事件并发送到斯诺普洛分析
  • 分析 识别 - 确定来访者的身份,并将详情发送给斯诺普洛分析公司

浏览器 API

import Analytics from 'analytics'
import snowplowPlugin from '@analytics/snowplow'

const analytics = Analytics({
  app: 'awesome-app',
  plugins: [
    // Minimal recommended configuration
    snowplowPlugin({
      name: 'snowplow',
      collectorUrl: 'collector.mysite.com',
      trackerSettings: {
        appId: 'myApp'
      }
    })
  ]
})

浏览器配置选项

选项说明
collectorUrl
所需经费 - 绳子
雪花收藏器的 URL
name
选项 - 绳子
用于识别此跟踪器实例的名称, 如果使用多个跟踪器实例( “ snowplow' 默认) 则使用
trackerSettings
选项 - 对象
传递到雪花追踪器的参数图
trackerSettings.appId
选项 - 绳子
用于识别此应用程序的应用程序
trackerSettings.platform
选项 - 绳子
跟踪平台 ("web" 默认)
trackerSettings.cookieDomain
选项 - 绳子
要设置 cookie 的域
trackerSettings.discoverRootDomain
选项 - 绳子
自动发现根域
trackerSettings.cookieName
选项 - 绳子
饼干的前缀 (")s (韩语)" 默认)
trackerSettings.cookieSameSite
选项 - 绳子
SameSite cookie 设置( “ 无” 默认)
trackerSettings.cookieSecure
选项 - 布尔
安全饼干设置( 真正的默认)
trackerSettings.encodeBase64
选项 - 布尔
将 JSON 对象编码为 Base64( 真默认)
trackerSettings.respectDoNotTrack
选项 - 布尔
尊重不跟踪( 考虑分析- 插入- do- not- track) (假默认)
trackerSettings.eventMethod
选项 - 绳子
发送事件、获取、 POST、 灯塔的方法( POST 默认)
trackerSettings.bufferSize
选项 - 数目
发送前要缓冲的事件数量(1个默认)
trackerSettings.maxPostBytes
选项 - 数目
发送前的最大大小 POST 或 Beacon( 默认 40000 )
trackerSettings.crossDomainLinker
选项 - 绳子
函数来配置要添加跨域链接的链接
trackerSettings.cookieLifetime
选项 - 数目
Cookie 寿命( 63072000 默认)
trackerSettings.stateStorageStrategy
选项 - 绳子
使用 cookie 和/或本地仓库( “ cookieAnd LocalStorage ” 默认)
trackerSettings.maxLocalStorageQueueSize
选项 - 数目
在本地存储中缓冲以阻止填充本地存储的最大事件数 (1000 默认)
trackerSettings.resetActivityTrackingOnPageView
选项 - 布尔
决定是否在虚拟页面视图上重设页面ping计时器的旗帜( 真实默认)
trackerSettings.connectionTimeout
选项 - 布尔
超时, 以毫秒计, 在 GET 和 POST 请求之前, 将超时( 5000 默认) ( Snowplow JS 2
trackerSettings.anonymousTracking
选项 - 对象
启用匿名跟踪功能的旗帜( 假默认)
trackerSettings.anonymousTracking.withSessionTracking
选项 - 布尔
标记以允许是否以匿名跟踪模式继续跟踪会话( 假默认)
trackerSettings.anonymousTracking.withServerAnonymisation
选项 - 布尔
防止收藏家返回和捕获 cookie并捕获 ip 地址的旗帜( 假默认)
trackerSettings.contexts
选项 - 对象
每个事件的自动上下文
trackerSettings.contexts.webPage
选项 - 布尔
网页上下文,包含页面视图id. (真正的默认)
trackerSettings.contexts.performanceTiming
选项 - 布尔
增加业绩时间安排信息
trackerSettings.contexts.clientHints
选项 - 对象
添加客户提示信息(Snowplow JS 2.1.5.0+)
trackerSettings.contexts.clientHints.includeHighEntropy
选项 - 布尔
捕获高输入客户端提示(Snowplow JS 2.1.5.0+)
trackerSettings.contexts.gaCookies
选项 - 布尔
添加 gaCookie 信息
trackerSettings.contexts.geolocation
选项 - 布尔
添加浏览器地理定位信息
trackerSettings.contexts.optimizelyXSummary
选项 - 布尔
添加浏览器地理定位信息
trackerSettings.plugins
选项 - 阵列
在跟踪器初始化时包含的额外插件 。 见 https://docs.snowplowanalytics.com/docs/collection-data/collection- from-own-applications/javascript-tracker/browser-tracker-v3- reference/plugins/ 互联网档案馆的存檔,存档日期2013-12-12

服务器侧用法

Snowplow Analytics 服务器侧节点.js插件与这些分析的api方法合作:

  • 分析. p - 将页面视图输入斯诺普洛分析
  • 分析. track - 追踪自定义事件并发送到斯诺普洛分析
  • 分析 识别 - 确定来访者的身份,并将详情发送给斯诺普洛分析公司

服务器侧 API

import Analytics from 'analytics'
import snowplowPlugin from '@analytics/snowplow'

const analytics = Analytics({
  app: 'awesome-app',
  plugins: [
    snowplowPlugin({
      name: 'snowplow',
      collectorUrl: 'collector.mysite.com',
      appId: 'myApp'
    })
  ]
})

服务器侧配置选项

选项说明
collectorUrl
所需经费 - 绳子
雪花收藏器的 URL
appId
所需经费 - 绳子
用于识别此应用程序的应用程序
name
选项 - 绳子
用于识别此跟踪器实例的名称 (' snowplow' 默认)
protocol
选项 - 绳子
“ http” 或“ https” (“ https” 默认)
port
选项 - 绳子
收藏器端口( 80 或 443 默认)
method
选项 - 绳子
发送事件到收集器、 “ post” 或“ get” (“ post” 默认) 的方法
bufferSize
选项 - 绳子
仅在 N 被缓冲后发送事件 。 GET 请求默认为 1, POST 请求默认为 10 .
retries
选项 - 绳子
追踪器将尝试重发事件的次数 。 默认为 5.
maxSockets
选项 - 绳子
节点.js代理对象 Options 对象调谐性能( 6 默认)
platform
选项 - 绳子
设置平台 https://bit.ly/302dSQy (英语) ('srv' 默认)
screenResolution
选项 - 对象
如果可用, 设置设备屏幕分辨率
screenResolution.width
选项 - 数目
屏幕宽度正整数
screenResolution.height
选项 - 数目
屏幕高度正整数
viewport
选项 - 对象
如果可用, 设置设备视图
viewport.width
选项 - 数目
视图宽度正整数
viewport.height
选项 - 数目
查看高度正整数
colorDepth
选项 - 数目
正整数, 每像素以比特计
timezone
选项 - 绳子
设置用户的时区, 如“ 欧洲/ 伦敦 ”
lang
选项 - 绳子
Ser 用户的名词 e. global This. 'en'

其他例子

以下是其他执行实例.

服务器侧 ES6
import Analytics from 'analytics'
import snowplowPlugin from '@analytics/snowplow'

const analytics = Analytics({
  app: 'awesome-app',
  plugins: [
    snowplowPlugin({
      name: 'snowplow',
      collectorUrl: 'collector.mysite.com',
      appId: 'myApp'
    })
    // ...other plugins
  ]
})

/* Track a page view */
// Track page
analytics.page()

// or Track page view with additional entities
analytics.page({
  contexts: [
    {
      schema: 'iglu:com.acme/blog_post/jsonschema/1-0-0',
      data: {
        title: 'Re-thinking the structure of event data',
        url:
          'https://snowplowanalytics.com/blog/2020/01/24/re-thinking-the-structure-of-event-data/',
        category: 'Data Insights',
        author: 'Cara Baestlein',
        datePublished: '2020-01-24'
      }
    }
  ]
})

/* Track a custom event */
// Track structured event
analytics.track('playedVideo', {
  category: 'Videos',
  label: 'Fall Campaign',
  value: 42
})

// or Track Self Describing event
analytics.track('selfDescribingEvent', {
  schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
  data: {
    id: 42,
    title: 'Fall Campaign'
  }
})

// or Track Self Describing event with additional entities
analytics.track('selfDescribingEvent', {
  schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
  data: {
    id: 42,
    title: 'Fall Campaign',
    videoTimestampInMs: 1104
  },
  contexts: [
    {
      schema: 'iglu:com.acme/product/jsonschema/1-0-0',
      data: {
        id: 'f9cb6cb6-5ca8-47a6-9035-d9c6ac13029e',
        category: 'clothing',
        subCategory: 'socks',
        price: 3.99
      }
    }
  ]
})

// or Track Enchanced Ecommerce event with product context
analytics.track('ScreenView', {
  name: 'Product Page',
  id: 'p-123',
  contexts: [
    {
      schema: 'iglu:com.acme/product/jsonschema/1-0-0',
      data: {
        id: 'f9cb6cb6-5ca8-47a6-9035-d9c6ac13029e',
        category: 'clothing',
        subCategory: 'socks',
        price: 3.99
      }
    }
  ]
})

/* Identify a visitor */
analytics.identify('user-id-xyz', {
  firstName: 'bill',
  lastName: 'murray'
})

具有共同JS的服务器端节点.js

如果使用节点,您将想要导入 .default

const analyticsLib = require('analytics').default
const snowplowPlugin = require('@analytics/snowplow').default

const analytics = analyticsLib({
  app: 'my-app-name',
  plugins: [
    snowplowPlugin({
      name: 'snowplow',
      collectorUrl: 'collector.mysite.com',
      appId: 'myApp'
    })
  ]
})

/* Track a page view */
// Track page
analytics.page()

// or Track page view with additional entities
analytics.page({
  contexts: [
    {
      schema: 'iglu:com.acme/blog_post/jsonschema/1-0-0',
      data: {
        title: 'Re-thinking the structure of event data',
        url:
          'https://snowplowanalytics.com/blog/2020/01/24/re-thinking-the-structure-of-event-data/',
        category: 'Data Insights',
        author: 'Cara Baestlein',
        datePublished: '2020-01-24'
      }
    }
  ]
})

/* Track a custom event */
// Track structured event
analytics.track('playedVideo', {
  category: 'Videos',
  label: 'Fall Campaign',
  value: 42
})

// or Track Self Describing event
analytics.track('selfDescribingEvent', {
  schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
  data: {
    id: 42,
    title: 'Fall Campaign'
  }
})

// or Track Self Describing event with additional entities
analytics.track('selfDescribingEvent', {
  schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
  data: {
    id: 42,
    title: 'Fall Campaign',
    videoTimestampInMs: 1104
  },
  contexts: [
    {
      schema: 'iglu:com.acme/product/jsonschema/1-0-0',
      data: {
        id: 'f9cb6cb6-5ca8-47a6-9035-d9c6ac13029e',
        category: 'clothing',
        subCategory: 'socks',
        price: 3.99
      }
    }
  ]
})

// or Track Enchanced Ecommerce event with product context
analytics.track('ScreenView', {
  name: 'Product Page',
  id: 'p-123',
  contexts: [
    {
      schema: 'iglu:com.acme/product/jsonschema/1-0-0',
      data: {
        id: 'f9cb6cb6-5ca8-47a6-9035-d9c6ac13029e',
        category: 'clothing',
        subCategory: 'socks',
        price: 3.99
      }
    }
  ]
})

/* Identify a visitor */
analytics.identify('user-id-xyz', {
  firstName: 'bill',
  lastName: 'murray'
})

在 HTML 中使用

以下是通过unpkg CDN导入的例子. 请注意,这将拉入该套件的最新版本.

<!DOCTYPE html>
<html>
  <head>
    <title>Using @analytics/snowplow in HTML</title>
    <script src="https://unpkg.com/analytics/dist/analytics.min.js"></script>
    <script src="https://unpkg.com/@analytics/snowplow/dist/@analytics/snowplow.min.js"></script>
    <script type="text/javascript">
      /* Initialize analytics */
      var Analytics = _analytics.init({
        app: 'my-app-name',
        plugins: [
          // Minimal recommended configuration
          analyticsSnowplow({
            name: 'snowplow',
            collectorUrl: 'collector.mysite.com',
            trackerSettings: {
              appId: 'myApp'
            }
          })
        ]
      })

      /* Track a page view */
      // Enable some automatic tracking before page event
      analytics.on('initialize:snowplow', ({ instance }) => {
        instance.plugins.snowplow.enableActivityTracking(10, 10)
        instance.plugins.snowplow.enableLinkClickTracking()
      })

      // Track page
      analytics.page()

      // or Track page view with additional entities
      analytics.page({
        contexts: [
          {
            schema: 'iglu:com.acme/blog_post/jsonschema/1-0-0',
            data: {
              title: 'Re-thinking the structure of event data',
              category: 'Data Insights',
              author: 'Cara Baestlein',
              datePublished: '2020-01-24'
            }
          }
        ]
      })

      /* Track a custom event */
      // Track structured event
      analytics.track('playedVideo', {
        category: 'Videos',
        label: 'Fall Campaign',
        value: 42
      })

      // or Track Self Describing event
      analytics.track('selfDescribingEvent', {
        schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
        data: {
          id: 42,
          title: 'Fall Campaign'
        }
      })

      // or Track Self Describing event with additional entities
      analytics.track('selfDescribingEvent', {
        schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
        data: {
          id: 42,
          title: 'Fall Campaign',
          videoTimestampInMs: 1104
        },
        contexts: [
          {
            schema: 'iglu:com.acme/product/jsonschema/1-0-0',
            data: {
              id: 'f9cb6cb6-5ca8-47a6-9035-d9c6ac13029e',
              category: 'clothing',
              subCategory: 'socks',
              price: 3.99
            }
          }
        ]
      })

      // or Track Enchanced Ecommerce event with product context
      analytics.track('EnhancedEcommerceProductContext', {
        id: 'P12345',
        name: 'Android Warhol T-Shirt',
        list: 'Search Results',
        brand: 'Google',
        category: 'Apparel/T-Shirts',
        variant: 'Black',
        quantity: 1
      })
      analytics.track('EnhancedEcommerceAction', {
        action: 'add'
      })

      /* Identify a visitor */
      analytics.identify('user-id-xyz')
    </script>
  </head>
  <body>
    ....
  </body>
</html>

通过 ES 模块在 HTML 中使用

使用 @analytics/snowplow 在无害环境管理模块中.

<!DOCTYPE html>
<html>
  <head>
    <title>Using @analytics/snowplow in HTML via ESModules</title>
    <script>
      // Polyfill process.
      // **Note**: Because `import`s are hoisted, we need a separate, prior <script> block.
      window.process = window.process || { env: { NODE_ENV: 'production' } }
    </script>
    <script type="module">
      import analytics from 'https://unpkg.com/analytics/lib/analytics.browser.es.js?module'
      import analyticsSnowplow from 'https://unpkg.com/@analytics/snowplow/lib/analytics-plugin-snowplow.browser.es.js?module'
      /* Initialize analytics */
      const Analytics = analytics({
        app: 'analytics-html-demo',
        debug: true,
        plugins: [
          // Minimal recommended configuration
          analyticsSnowplow({
            name: 'snowplow',
            collectorUrl: 'collector.mysite.com',
            trackerSettings: {
              appId: 'myApp'
            }
          })
          // ... add any other third party analytics plugins
        ]
      })

      /* Track a page view */
      // Enable some automatic tracking before page event
      analytics.on('initialize:snowplow', ({ instance }) => {
        instance.plugins.snowplow.enableActivityTracking(10, 10)
        instance.plugins.snowplow.enableLinkClickTracking()
      })

      // Track page
      analytics.page()

      // or Track page view with additional entities
      analytics.page({
        contexts: [
          {
            schema: 'iglu:com.acme/blog_post/jsonschema/1-0-0',
            data: {
              title: 'Re-thinking the structure of event data',
              category: 'Data Insights',
              author: 'Cara Baestlein',
              datePublished: '2020-01-24'
            }
          }
        ]
      })

      /* Track a custom event */
      // Track structured event
      analytics.track('playedVideo', {
        category: 'Videos',
        label: 'Fall Campaign',
        value: 42
      })

      // or Track Self Describing event
      analytics.track('selfDescribingEvent', {
        schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
        data: {
          id: 42,
          title: 'Fall Campaign'
        }
      })

      // or Track Self Describing event with additional entities
      analytics.track('selfDescribingEvent', {
        schema: 'iglu:com.acme/video_played/jsonschema/1-0-0',
        data: {
          id: 42,
          title: 'Fall Campaign',
          videoTimestampInMs: 1104
        },
        contexts: [
          {
            schema: 'iglu:com.acme/product/jsonschema/1-0-0',
            data: {
              id: 'f9cb6cb6-5ca8-47a6-9035-d9c6ac13029e',
              category: 'clothing',
              subCategory: 'socks',
              price: 3.99
            }
          }
        ]
      })

      // or Track Enchanced Ecommerce event with product context
      analytics.track('EnhancedEcommerceProductContext', {
        id: 'P12345',
        name: 'Android Warhol T-Shirt',
        list: 'Search Results',
        brand: 'Google',
        category: 'Apparel/T-Shirts',
        variant: 'Black',
        quantity: 1
      })
      analytics.track('EnhancedEcommerceAction', {
        action: 'add'
      })

      /* Identify a visitor */
      analytics.identify('user-id-xyz')
    </script>
  </head>
  <body>
    ....
  </body>
</html>

见 分析提供者插件的完整列表 在主重播时.

版本与发布记录

@analytics/snowplow 共发布 11 个版本,首次发布于 2020/08/03;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.3.3latest2022/03/184 年前
0.3.22022/02/134 年前
0.3.12022/02/114 年前
0.3.02022/02/064 年前
0.2.52021/03/205 年前
0.2.42021/03/155 年前

关于 @analytics/snowplow 的常见问题

@analytics/snowplow 是什么?

浏览器和节点的“分析”模块的雪花集成

如何安装 @analytics/snowplow?

在项目目录运行 npm install @analytics/snowplow,或使用 pnpm add / yarn add / bun add。

@analytics/snowplow 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/analytics__snowplow 是否存在。

@analytics/snowplow 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@analytics/snowplow 可以商用吗?

@analytics/snowplow 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@analytics/snowplow 的下载量有多少?

根据 npm 官方下载统计,@analytics/snowplow 在 2026/10/06 – 2026/11/04 这 30 天内被下载 7,835 次,日均约 261 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@analytics/snowplow 还在维护吗?

最新版本 0.3.3 发布于 2022/03/18(4 年前);至今共发布 11 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/08/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。