Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

user-interaction-tracker

Package Overview
Dependencies
Maintainers
0
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

user-interaction-tracker

用户交互跟踪器 duration

  • 1.0.0
  • npm
  • Socket score

Version published
Weekly downloads
6
increased by100%
Maintainers
0
Weekly downloads
 
Created
Source

User Interaction Tracker

用户交互跟踪器是一个用于跟踪用户行为和时间的库。它提供了一种轻量级的方式来记录用户的交互操作,如开始和结束某个操作的时间,以及操作的持续时间(duration)。

npm version

English

特性

  • 跟踪用户开始和结束操作的时间
  • 计算并记录操作的持续时间
  • 支持自定义的上传日志函数
  • 支持在 Vue 2 和 Vue 3 项目中使用
  • 操作简单:startAction、endAction,支持多个跟踪

安装

使用 npm 安装:

npm install user-interaction-tracker

使用 yarn 安装:

yarn add user-interaction-tracker

使用方法

在 Vue 项目中安装插件

import { createApp } from 'vue';
import App from './App.vue';
import userInteractionTracker, { UploadLogFunction } from 'user-interaction-tracker';

const app = createApp(App);

// 示例上传日志函数
const uploadLog: UploadLogFunction = (action, type, data) => {
  // 实现你的上传日志逻辑
  console.log(`Upload log: action=${action}, type=${type}, data=`, data);
};

app.use(userInteractionTracker, {
  uploadLog,
  globalName: '$userTracker', // 可选,自定义全局变量名,默认为 '$userTracker'
  enabled: true, // 可选,是否启用,默认为 false
});

app.mount('#app');

注意: 目前 type 支持startActiondurationendAction三种类型。

  1. typestartAction时,表示这个动作是一个计时开始的动作。
  2. typeduration时,表示这个动作是一个持续性动作,有明确的开始时间和结束时间。(可以作为 duration 日志上传)
  3. typeendAction时,表示这个动作只是一个交互的动作,没有开始时间。(代表 duration 计算失败了,也可作为交互埋点上传)

在组件中使用

Vue 3 组件示例

<template>
  <div>
    <button @click="handleStartAction">开始记录</button>
    <button @click="handleEndAction">结束记录</button>
  </div>
</template>

<script lang="ts" setup>
import { getCurrentInstance, ref, onMounted } from 'vue';

const tracker = getCurrentInstance()?.appContext.config.globalProperties.$userTracker;

// 开始操作
const handleStartAction = () => {
    tracker.startAction('action_name');
};

// 结束操作
const handleEndAction = () => {
    tracker.endAction('action_name');
};
</script>

Vue 2 组件示例

<template>
  <div>
    <button @click="handleStartAction">开始记录</button>
    <button @click="handleEndAction">结束记录</button>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    handleStartAction() {
        this.$userTracker.startAction('action_name');
    },
    handleEndAction() {
        this.$userTracker.endAction('action_name');
    },
  }
};
</script>

配置选项

参数类型描述默认值
uploadLog函数用于上传日志的函数,接收三个参数:action(操作名称),type(操作类型),data(操作数据)必填
enabled布尔值是否启用false
globalName字符串在 Vue 实例中全局挂载追踪器的名称$userTracker

API

方法描述参数返回值
startAction(action: string, options?: any)开始记录一个操作action (字符串): 操作名称
options (可选, any): 开始操作的选项
endAction(action: string, options?: any) 结束记录一个操作action (字符串): 操作名称
options (可选, any): 结束操作的选项
getPendingActions(action?: string) 获取未完成的操作。如果传递 action 参数,返回该操作的详细信息;否则返回所有未完成的操作。action (可选, 字符串): 操作名称Object or Array
clearActions(actions?: string[]): void清除指定的操作记录。如果不传递参数,清除所有操作记录。actions (可选, 数组): 要清除的操作名称数组

UploadLogFunction

type UploadLogFunction = (
  action: string,
  type: 'duration' | 'endAction' | 'startAction',
  data?: {
    duration: number,
    start: number | null,
    end: number | null,
    startOptions: any,
    endOptions: any,
  }
) => void;

贡献

欢迎提出问题、报告 bug 或提出新功能请求。请在 GitHub Issues 中提出。

许可证

MIT 许可证。请参阅 LICENSE 文件了解更多详情。

Keywords

FAQs

Package last updated on 11 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc