CN110569185A - 一种前端埋点方法和装置 - Google Patents
一种前端埋点方法和装置 Download PDFInfo
- Publication number
- CN110569185A CN110569185A CN201910711585.0A CN201910711585A CN110569185A CN 110569185 A CN110569185 A CN 110569185A CN 201910711585 A CN201910711585 A CN 201910711585A CN 110569185 A CN110569185 A CN 110569185A
- Authority
- CN
- China
- Prior art keywords
- point
- buried
- embedded
- page
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种前端埋点方法和装置,该方法包括:获取埋点类型对应的埋点规则,以及埋点参数;根据当前操作确定埋点类型;根据确定的埋点类型对应的埋点规则确定是否需要埋点;当确定需要埋点时,基于所述埋点类型对应的埋点参数进行埋点。该方法能够降低埋点成本,且不会由于埋点造成代码冗余。
Description
技术领域
本发明涉及信息处理技术领域,特别涉及一种前端埋点方法和装置。
背景技术
目前,针对代码埋点规则的埋点都是在用户规模有一定数量后才会进行,而这种情况下代码的逻辑架构已然成型,对于这种架构已然成熟的代码,目前比较常用的解决方案为:手动在需要发送的地方添加埋点请求,而这意味着需要比较大的改动成本去完成一个较小的埋点需求。
具体埋点过程:根据产品需求针对不同的埋点类型,手写增加对应的埋点请求代码,如对于页面,即在每次请求页面时发送一次埋点请求,针对按钮,在每次点击按钮时发送一次埋点请求等。
上述实现方式存在如下技术缺点:
1、成本较高,维护成本不断增长,每增加一个埋点需求就需要硬编码一次,后期维护需要找的代码量不断增多。
2、代码冗余,随着埋点需求不断增长,代码量持续上升。
发明内容
有鉴于此,本申请提供一种前端埋点方法和装置,能够降低埋点成本,且不会由于埋点造成代码冗余。
为解决上述技术问题,本申请的技术方案是这样实现的:
在一个实施例中,提供了一种前端埋点方法,所述方法包括:
获取埋点类型对应的埋点规则,以及埋点参数;
根据当前操作确定埋点类型;
根据确定的埋点类型对应的埋点规则确定是否需要埋点;
当确定需要埋点时,基于所述埋点类型对应的埋点参数进行埋点。
其中,所述根据当前操作确定埋点类型,包括:
当当前操作为进入页面时,确定当前操作对应的埋点类型为页面埋点和/或页面停留时间埋点;
当当前操作为点击事件时,确定当前操作对应的埋点类型为点击埋点;
当当前操作为运行功能模块时,确定当前操作对应的埋点类型为模块埋点和/或模块停留时间埋点。
其中,当确定当前操作对应的埋点类型为页面埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
获取所述页面的第一统一资源标识符URI地址,当第一URI地址对应的页面为待埋点页面时,获取前一页面的第二URI地址;
基于获取的第一URI地址和第二URI地址确定第一URI地址对应的页面请求是否为浏览器调用自身应用程序接口API进行的页面请求,如果是,根据所述埋点规则设置的浏览器调用自身API进行的页面请求是否埋点确定是否在第一URI地址对应的页面埋点;否则,使用第一URI地址在路由参数表中获取对应的参数;根据获取的参数是否满足所述埋点规则中针对该第一URI地址设置的埋点条件确定是否进行埋点。
其中,当确定当前操作对应的埋点类型为页面停留时间埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
获取当前页面的第一URI地址;
根据获取的第一URI地址在页面停留时间埋点对应的埋点规则中是否被配置为需要进行页面停留时间埋点的URI地址,来确定针对第一URI地址所对应的页面是否需要进行时间停留埋点;
所述基于所述埋点类型对应的埋点参数进行埋点,包括:
获取所述第一URI地址对应的页面的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
其中,当确定当前操作对应的埋点类型为点击埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
确定当前点击事件是否为点击埋点对应的埋点规则中设置的监听事件,如果是,获取所述点击事件的参数信息;
根据获取的参数信息与所述埋点规则中针对该点击事件配置的参数是否匹配来确定是否进行埋点。
其中,所述方法进一步包括:针对所述埋点规则中设置的模块标识对应的模块预定义第一函数,其中,所述第一函数用于监听模块状态变化;
当确定当前操作对应的埋点类型为模块埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
确定该模块的标识是否为所述埋点规则中设置的模块标识,如果是,监听第一函数;
根据第一函数返回的参数是否有效确定是否进行模块埋点。
其中,当确定当前操作对应的埋点类型为模块停留时间埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
获取当前运行模块的标识;
根据获取的模块的标识在所述埋点规则中是否被设置为需要进行模块停留时间埋点来确定针对所述标识所对应的模块是否需要进行时间停留埋点;
所述基于所述埋点类型对应的埋点参数进行埋点,包括:
获取所述标识对应的模块运行的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
其中,所述方法进一步包括:获取埋点类型对应的目的地址;
所述基于所述埋点类型对应的埋点参数进行埋点,包括:
基于所述埋点参数向对应目的地址发送请求。
在另一个实施例中,提供了一种前端埋点装置,所述装置包括:获取单元、确定单元和埋点单元;
所述获取单元,用于获取埋点类型对应的埋点规则,以及埋点参数;
所述确定单元,用于根据当前操作确定埋点类型;并根据确定的埋点类型对应的埋点规则确定是否需要埋点;
所述埋点单元,用于当所述确定单元确定需要埋点时,基于所述获取单元获取的埋点类型对应的埋点参数进行埋点。
其中,
所述确定单元,具体用于根据当前操作确定埋点类型时,包括:当当前操作为进入页面时,确定当前操作对应的埋点类型为页面埋点和/或页面停留时间埋点;当当前操作为点击事件时,确定当前操作对应的埋点类型为点击埋点;当当前操作为运行功能模块时,确定当前操作对应的埋点类型为模块埋点和/或模块停留时间埋点。
其中,
所述确定单元,具体用于当确定当前操作对应的埋点类型为页面埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:获取所述页面的第一统一资源标识符URI地址,当第一URI地址对应的页面为待埋点页面时,获取前一页面的第二URI地址;基于获取的第一URI地址和第二URI地址确定第一URI地址对应的页面请求是否为浏览器调用自身应用程序接口API进行的页面请求,如果是,根据所述埋点规则设置的浏览器调用自身API进行的页面请求是否埋点确定是否在第一URI地址对应的页面埋点;否则,使用第一URI地址在路由参数表中获取对应的参数;根据获取的参数是否满足所述埋点规则中针对该第一URI地址设置的埋点条件确定是否进行埋点。
其中,
所述确定单元,具体用于当确定当前操作对应的埋点类型为页面停留时间埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:获取当前页面的第一URI地址;根据获取的第一URI地址在页面停留时间埋点对应的埋点规则中是否被配置为需要进行页面停留时间埋点的URI地址,来确定针对第一URI地址所对应的页面是否需要进行时间停留埋点;
所述埋点单元,具体用于基于所述获取单元获取的埋点类型对应的埋点参数进行埋点,包括:获取所述第一URI地址对应的页面的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
其中,
所述确定单元,具体用于当确定当前操作对应的埋点类型为点击埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:确定当前点击事件是否为点击埋点对应的埋点规则中设置的监听事件,如果是,获取所述点击事件的参数信息;根据获取的参数信息与所述埋点规则中针对该点击事件配置的参数是否匹配来确定是否进行埋点。
其中,
所述装置进一步包括:设置单元;
所述设置单元,用于针对所述埋点规则中设置的模块标识对应的模块预定义第一函数,其中,所述第一函数用于监听模块状态变化;
所述确定单元,具体用于当确定当前操作对应的埋点类型为模块埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:确定该模块的标识是否为所述埋点规则中设置的模块标识,如果是,监听所述设置单元设置的第一函数;根据第一函数返回的参数是否有效确定是否进行模块埋点。
其中,
所述确定单元,用于当确定当前操作对应的埋点类型为模块停留时间埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:获取当前运行模块的标识;根据获取的模块的标识在所述埋点规则中是否被设置为需要进行模块停留时间埋点来确定针对所述标识所对应的模块是否需要进行时间停留埋点;
所述埋点单元,具体用于基于所述获取单元获取的埋点类型对应的埋点参数进行埋点时,包括:获取所述标识对应的模块运行的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
其中,
所述获取单元,进一步用于获取埋点类型对应的目的地址;
所述埋点单元,具体用于基于所述获取单元获取的埋点类型对应的埋点参数进行埋点时,基于所述埋点参数向对应目的地址发送请求。
在另一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现所述前端埋点方法的步骤。
在另一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述前端埋点方法的步骤。
由上面的技术方案可见,上述实施例中根据当前操作确定埋点类型;并根据获取埋点类型对应的埋点规则,确定是否需要埋点;当确定需要埋点时,基于获取的埋点类型对应的埋点参数进行埋点。该方案能够降低埋点成本,且不会由于埋点造成代码冗余。
附图说明
以下附图仅对本发明做示意性说明和解释,并不限定本发明的范围:
图1为本申请实施例中前端埋点流程示意图;
图2为本申请实施例中针对当前页面是否进行页面埋点的确定流程示意图;
图3为本申请实施例中针对当前页面是否进行停留时间埋点的确定流程示意图;
图4为本申请实施例中针对点击事件是否进行点击埋点的确定流程示意图;
图5为本申请实施例中针对模块是否进行埋点的确定流程示意图;
图6为本申请实施例中针对当前模块是否进行停留时间埋点的确定流程示意图;
图7为本申请实施例中应用于上述技术的装置结构示意图;
图8是本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
本申请实施例中提供一种前端埋点方法,实现该方法的装置可以为具有计算处理能力的设备,如一台PC等,具体实现时,该设备可以与需要埋点的前端设备为一台设备,也可以为不同设备,下文为了描述方便可以简称为埋点设备。
下面结合附图,以埋点设备和需要埋点的前端设备为同一设备为例,详细描述本申请实施例中实现前端埋点过程。
实施例一
参见图1,图1为本申请实施例中前端埋点流程示意图。具体步骤为:
步骤101,获取埋点类型对应的埋点规则,以及埋点参数。
本申请实施例中的埋点类型对应的埋点规则,以及埋点参数可以通过文档的形式预先保存在本地,也可以通过人工输入的当时保存在本地。
预先保存在本地的文档可以为通过其他设备完成,并发送或拷贝到本设备的文档,也可以为直接在本设备编写完成的文档。
本申请实施例中获取的埋点类型可以包括如下埋点类型中一种或任意组合:
页面埋点、点击埋点、模块埋点、停留时间埋点(页面停留时间埋点和模块停留时间埋点)。
其中,
页面埋点,针对页面进行埋点;这里的页面可以为单一的页面,也可为一个容器对应的页面;
点击埋点,针对按钮进行埋点,这里的按钮不仅仅指传统意义上的<Button>标签,还包括<a>、<span>等模拟按钮的元素;
模块埋点,针对模块处于某种状态下进行埋点,这里的模块为实现某一功能的模块,如可以是通过组件实现功能的模块,如弹窗等;也可以是通过软件功能实现的模块,如一个信息公告等;
页面停留时间埋点和模块停留时间埋点,也可以统称为时间停留埋点,针对某个模块或页面需要埋点时,统计模块或页面停留的时间进行埋点。
不同的埋点类型对应不同的埋点规则,给出如下举例说明:
针对页面埋点可以配置待埋点的统一资源标识符(Uniform ResourceIdentifier,URI)地址,这里之所以配置的是待埋点的URI地址,是因为针对该URI地址对应的页面还需根据具体情况确定是否真正埋点;如待埋点的URI地址为:URI 1、URI 2、URI 3等。
针对点击埋点,可以设置点击按钮标识,也可以不设置,默认针对所有点击按钮均需确定是否进行埋点;
针对模块埋点,设置需要待埋点的模块的标识;如待埋点的模块标识为:模块1、模块2、模块4等,在根据模块运行的具体情况确定对应模块是否需要埋点。
针对页面停留时间埋点和模块停留时间埋点,设置需要进行停留时间埋点的页面的标识和模块标识。
需进行页面停留时间埋点的页面对应的URI为:URI 5、URI 4等;
需进行模块停留时间埋点的模块的标识为:模块1、模块3等。
步骤102,根据当前操作确定埋点类型。
本步骤的具体实现如下:
当当前操作为进入页面时,确定当前操作对应的埋点类型为页面埋点和/或页面停留时间埋点;
当当前操作为点击事件时,确定当前操作对应的埋点类型为点击埋点;
当当前操作为运行功能模块时,确定当前操作对应的埋点类型为模块埋点和/或模块停留时间埋点。
步骤103,根据确定的埋点类型对应的埋点规则确定是否需要埋点。
当确定当前操作对应的埋点类型为页面埋点时,本步骤根据该埋点类型对应的埋点规则确定是否需要埋点,具体包括:
参见图2,图2为本申请实施例中针对当前页面是否进行页面埋点的确定流程示意图。具体步骤为:
步骤201,获取当前页面的第一统一资源标识符(URI)地址。
步骤202,当确定第一URI地址对应的页面为待埋点页面时,获取前一页面的第二URI地址。
具体实现时,可以通过this.props.location.pathname,获取到当前页面的第一URI地址;通过prevProps.match.url获取前一页面的第二URI地址。
具体实现时,还可以通过componentDidUpdate(prevProps)函数,对比当前页面URI与上一次来源的URI是否相同,也就是说确定页面是刷新变化,还是切换变化,如果仅是刷新变化,则不会进行埋点。
本申请实施例中指针对切换变化的页面进行是否埋点处理。
步骤203,基于获取的第一URI地址和第二URI地址确定第一URI地址对应的页面请求是否为浏览器调用自身应用程序接口(Application Program Interface,API)进行的页面请求,如果是,执行步骤204;否则,执行步骤205。
本步骤中确定第一URI地址对应的页面请求是否为浏览器调用自身API进行的页面请求,即确定第一URI地址对应的页面为第二URI地址对应的页面的前进页面还是后退页面。
步骤204,根据所述埋点规则设置的浏览器调用自身API进行的页面请求是否埋点确定是否在第一URI地址对应的页面埋点;如果是,执行步骤206;否则,执行步骤207。
在埋点规则中还会设置浏览器调用自身API进行的页面请求,即新的页面是旧页面的前进页面或后退页面时,是否进行页面埋点,具体实现时,根据埋点规则中的配置确定是否在第一URI地址对应的页面埋点:
当在埋点规则中配置新的页面是旧页面的前进页面或后退页面时,进行页面埋点,则执行步骤206;否则,执行步骤207。
具体判断过程可以通过this.props.history.action来进行判断。
步骤205,使用第一URI地址在路由参数表中获取对应的参数;根据获取的参数是否满足所述埋点规则中针对该第一URI地址设置的埋点条件确定是否进行埋点,如果是,执行步骤206;否则,执行步骤207。
前端设备会存储全局路由配置文件,在前端设备初始化时,会初始化一份路由参数表,包括URI地址和参数对应关系。
在需求埋点规则中还需设置待埋点的URI地址对应的埋点条件,当获取第一URI地址对应的参数时,使用获取的参数确定是否满足所述埋点规则中针对第一URI地址设置的埋点条件。
步骤206,基于页面埋点对应的埋点参数进行埋点,结束本流程。
步骤207,在当前页面不进行页面埋点。
至此,完成在当前页面是否进行页面埋点的处理流程。
当确定当前操作对应的埋点类型为页面停留时间埋点时,本步骤根据该埋点类型对应的埋点规则确定是否需要埋点,具体包括:
参见图3,图3为本申请实施例中针对当前页面是否进行停留时间埋点的确定流程示意图。具体步骤为:
步骤301,获取当前页面的第一URI地址。
步骤302,根据获取的第一URI地址在页面停留时间埋点对应的埋点规则中是否被配置为需要进行页面停留时间埋点的URI地址确定针对第一URI地址所对应的页面是否需要进行时间停留埋点,如果是,执行步骤303;否则,执行步骤304。
步骤303,获取所述第一URI地址对应的页面的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
具体实现时,初始化完成后,即在componentDidMount函数中添加变量记录初始时间,如使用new Date();
在单页应用不应使用window.performance.timing所获的页面渲染所相关的数据,因为在单页应用中即使改变了路由但不刷新页面,该情况下是不会更新的;
在componentDidUpdate中,监听到路由变化时,获取结束时间并与开始时间返回给埋点函数,同时将开始时间重新赋值为结束时间的内容。
步骤304,在当前页面不进行页面停留时间埋点。
至此,完成在当前页面是否进行页面埋点的处理流程。
当确定当前操作对应的埋点类型为点击埋点时,本步骤根据该埋点类型对应的埋点规则确定是否需要埋点,具体包括:
参见图4,图4为本申请实施例中针对点击事件是否进行点击埋点的确定流程示意图。具体步骤为:
步骤401,监听点击事件。
当埋点规则中设置的埋点类型包括点击埋点时,需要监听点击事件
步骤402,确定当前点击事件是否为点击埋点对应的埋点规则中设置的监听事件,如果是,执行步骤403;执行步骤406。
步骤403,获取所述点击事件的参数信息。
具体可以通过如下函数实现:
在需要发送点击埋点的元素上填写参数,需要以’data-开头’,如<span data-eventId=”xxxx”>;
在初始化后,即componentDidMount()函数中挂载window.addEventListener(‘click’,处理的函数);
在处理的监听点击函数中,捕捉点击元素,通过event.target.getAttribute('data-xxx')获取该元素上携带的相应参数;
在结束后,即componentWillUnmount中,卸载该监听事件。
步骤404,根据获取的参数信息与所述埋点规则中针对该点击事件配置的参数是否匹配来确定是否进行埋点,如果是,执行步骤405;否则,执行步骤406。
根据获取的参数信息与所述埋点规则中针对该点击事件配置的参数是否相匹配来确定是否进行埋点,即在埋点规则中校验这些参数。
步骤405,基于获取的埋点参数进行埋点,结束本。
步骤406,针对当前点击事件不进行点击埋点。
至此,完成针对当前点击事件是否进行点击埋点的处理流程。
当确定当前操作对应的埋点类型为模块埋点时,本步骤中根据该埋点类型对应的埋点规则确定是否需要埋点,具体包括:
针对所述埋点规则中设置的模块标识对应的模块预定义第一函数,其中,所述第一函数用于监听模块状态变化。
在具体实现时,通过React高阶组件反向劫持模块的componentDidUpdate()函数,预定义第一函数sendDig,来返回埋点参数。
在需要埋点的模块中,使用ES6装饰器语法使用iihoc装饰该组件类,在组件中增加预定义的第一函数。
参见图5,图5为本申请实施例中针对模块是否进行埋点的确定流程示意图。具体步骤为:
步骤501,获取当前运行模块的标识。
步骤502,确定该模块的标识是否为埋点规则中设置的模块标识,如果是,执行步骤503;否则,执行步骤506。
步骤503,监听第一函数。
具体实现可以为:
iihoc的componentDidUpdate()监听劫持类的sendDig。
步骤504,根据第一函数返回的参数是否有效确定是否进行模块埋点,如果是,执行步骤505;否则,执行步骤506。
返回的参数是否有效,即返回的参数是否为该模块的状态变化参数,如果该模块状态没有变化,返回的参数为空,或者某个参数时,即为返回的参数为无效参数;如果返回了该模块的状态变化参数,则确定返回了有效参数,这里仅给出一种举例,具体使用时,据根据实际应用场景确定返回的参数是否为有效参数,在返回有效参数时则需要对该模块进行埋点。
步骤505,基于埋点参数进行埋点,结束本流程。
步骤506,针对当前模块不进行模块埋点。
至此,完成针对当前运行模块是否进行模块埋点的处理流程。
当确定当前操作对应的埋点类型为模块停留时间埋点时,本步骤根据该埋点类型对应的埋点规则确定是否需要埋点,具体包括:
参见图6,图6为本申请实施例中针对当前模块是否进行停留时间埋点的确定流程示意图。具体步骤为:
步骤601,获取当前运行模块的标识。
步骤602,根据获取的模块的标识在所述埋点规则中是否被设置为需要进行模块停留时间埋点来确定针对所述标识所对应的模块是否需要进行时间停留埋点,如果是,执行步骤603;否则,执行步骤604。
步骤603,获取所述标识对应的模块运行的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点,结束本流程。
具体实现时,在需要统计时长的模块内的componentDidMount添加一个变量记录初始时间,根据需求,在sendDig函数中根据需求设计状态,返回结束时间与记录的初始时间即可。
步骤604,针对当前模块不进行模块停留时间埋点。
至此,完成针对当前运行模块是否进行模块停留时间埋点的处理流程。
步骤104,当确定需要埋点时,基于所述埋点类型对应的埋点参数进行埋点。
该方法进一步包括:获取埋点类型对应的目的地址;获取的埋点类型对应的目的地址可以是手工输入的地址,也可以像埋点参数一样预先存储在本地存储的文档中。
本步骤中基于所述埋点类型对应的埋点参数进行埋点,包括:
基于所述埋点参数向对应目的地址发送请求。
该实施例根据配置的埋点类型,以及参数,自动识别当前是否进行埋点,并在确定需要埋点时,根据埋点类型对应的埋点参数进行埋点,即可根据实际需要进行数据采集和发送,在发送时,发送到对应的目的地址所对应的设备上。该方案不需要手动进行埋点编码,且不会因为埋点增加额外的代码,不会使系统的整个代码出现冗余。
基于同样的发明构思,本申请实施例中还提供一种前端埋点装置。参见图7,图7为本申请实施例中应用于上述技术的装置结构示意图。该装置包括:获取单元701、确定单元702和埋点单元703;
获取单元701,用于获取埋点类型对应的埋点规则,以及埋点参数;
确定单元702,用于根据当前操作确定埋点类型;并根据确定的埋点类型对应的埋点规则确定是否需要埋点;
埋点单元703,用于当确定单元702确定需要埋点时,基于获取单元701获取的埋点类型对应的埋点参数进行埋点。
优选地,
确定单元702,具体用于根据当前操作确定埋点类型时,包括:当当前操作为进入页面时,确定当前操作对应的埋点类型为页面埋点和/或页面停留时间埋点;当当前操作为点击事件时,确定当前操作对应的埋点类型为点击埋点;当当前操作为运行功能模块时,确定当前操作对应的埋点类型为模块埋点和/或模块停留时间埋点。
优选地,
确定单元702,具体用于当确定当前操作对应的埋点类型为页面埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:获取所述页面的第一统一资源标识符URI地址,当第一URI地址对应的页面为待埋点页面时,获取前一页面的第二URI地址;基于获取的第一URI地址和第二URI地址确定第一URI地址对应的页面请求是否为浏览器调用自身应用程序接口API进行的页面请求,如果是,根据所述埋点规则设置的浏览器调用自身API进行的页面请求是否埋点确定是否在第一URI地址对应的页面埋点;否则,使用第一URI地址在路由参数表中获取对应的参数;根据获取的参数是否满足所述埋点规则中针对该第一URI地址设置的埋点条件确定是否进行埋点。
优选地,
确定单元702,具体用于当确定当前操作对应的埋点类型为页面停留时间埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:获取当前页面的第一URI地址;根据获取的第一URI地址在页面停留时间埋点对应的埋点规则中是否被配置为需要进行页面停留时间埋点的URI地址来确定针对第一URI地址所对应的页面是否需要进行时间停留埋点;
埋点单元703,具体用于基于获取单元701获取的埋点类型对应的埋点参数进行埋点,包括:获取所述第一URI地址对应的页面的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
优选地,
确定单元702,具体用于当确定当前操作对应的埋点类型为点击埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:确定当前点击事件是否为点击埋点对应的埋点规则中设置的监听事件,如果是,获取所述点击事件的参数信息;根据获取的参数信息与所述埋点规则中针对该点击事件配置的参数是否匹配来确定是否进行埋点。
优选地,
所述装置进一步包括:设置单元704;
设置单元704,用于针对所述埋点规则中设置的模块标识对应的模块预定义第一函数,其中,所述第一函数用于监听模块状态变化;
确定单元702,具体用于当确定当前操作对应的埋点类型为模块埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:确定该模块的标识是否为所述埋点规则中设置的模块标识,如果是,监听设置单元704设置的第一函数;根据第一函数返回的参数是否有效确定是否进行模块埋点。
优选地,
确定单元702,用于当确定当前操作对应的埋点类型为模块停留时间埋点时,根据该埋点类型对应的埋点规则确定是否需要埋点,包括:获取当前运行模块的标识;根据获取的模块的标识在所述埋点规则中是否被设置为需要进行模块停留时间埋点来确定针对所述标识所对应的模块是否需要进行时间停留埋点;
埋点单元703,具体用于基于获取单元701获取的埋点类型对应的埋点参数进行埋点时,包括:获取所述标识对应的模块运行的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
优选地,
获取单元701,进一步用于获取埋点类型对应的目的地址;
埋点单元703,具体用于基于获取单元701获取的埋点类型对应的埋点参数进行埋点时,基于所述埋点参数向对应目的地址发送请求。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本申请只需硬编码一次即可适配不同场景的埋点需求,解决不同类型不同场景的埋点需求达到的效果:不论是页面埋点、点击埋点、模块埋点,只需要配置对应的埋点参数,即可自动发送埋点请求,无需处理代码逻辑。具体实现时能够根据配置参数,自动获取参数并解析;能够根据配置参数,自动识别埋点分类而发送埋点请求;能够根据配置参数,自动过滤不合法埋点;能够获取页面请求方式,使用者可根据需求自行调整自动触发页面埋点条件;对单页路由页面,即使通过刷新页面也可以保证埋点能正常且仅发送唯一一次;能够根据灵活支持业务模块埋点,有些场景下,对应的代码逻辑其实只有一处,但是对业务来说是多处,可以满足该种多处业务发送埋点的需求;能够支持老代码页面,兼容性好,不会影响到老代码逻辑;支持特殊埋点手动触发。
基于上述实现能够自动实现代码埋点,且不会由于埋点增加代码出现代码冗余的情况。
在另一个实施例中,本申请实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述前端埋点方法的步骤。
在另一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现所述前端埋点方法的步骤。
图8是本发明实施例提供的电子设备的实体结构示意图。如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行如下方法:
获取埋点类型对应的埋点规则,以及埋点参数;
根据当前操作确定埋点类型;
根据确定的埋点类型对应的埋点规则确定是否需要埋点;
当确定需要埋点时,基于所述埋点类型对应的埋点参数进行埋点。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种前端埋点方法,其特征在于,所述方法包括:
获取埋点类型对应的埋点规则,以及埋点参数;
根据当前操作确定埋点类型;
根据确定的埋点类型对应的埋点规则确定是否需要埋点;
当确定需要埋点时,基于所述埋点类型对应的埋点参数进行埋点。
2.根据权利要求1所述的方法,其特征在于,所述根据当前操作确定埋点类型,包括:
当当前操作为进入页面时,确定当前操作对应的埋点类型为页面埋点和/或页面停留时间埋点;
当当前操作为点击事件时,确定当前操作对应的埋点类型为点击埋点;
当当前操作为运行功能模块时,确定当前操作对应的埋点类型为模块埋点和/或模块停留时间埋点。
3.根据权利要求2所述的方法,其特征在于,当确定当前操作对应的埋点类型为页面埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
获取所述页面的第一统一资源标识符URI地址,当第一URI地址对应的页面为待埋点页面时,获取前一页面的第二URI地址;
基于获取的第一URI地址和第二URI地址确定第一URI地址对应的页面请求是否为浏览器调用自身应用程序接口API进行的页面请求,如果是,根据所述埋点规则设置的浏览器调用自身API进行的页面请求是否埋点确定是否在第一URI地址对应的页面埋点;否则,使用第一URI地址在路由参数表中获取对应的参数;根据获取的参数是否满足所述埋点规则中针对该第一URI地址设置的埋点条件确定是否进行埋点。
4.根据权利要求2所述的方法,其特征在于,当确定当前操作对应的埋点类型为页面停留时间埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
获取当前页面的第一URI地址;
根据获取的第一URI地址在页面停留时间埋点对应的埋点规则中是否被配置为需要进行页面停留时间埋点的URI地址来确定针对第一URI地址所对应的页面是否需要进行时间停留埋点;
所述基于所述埋点类型对应的埋点参数进行埋点,包括:
获取所述第一URI地址对应的页面的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
5.根据权利要求2所述的方法,其特征在于,当确定当前操作对应的埋点类型为点击埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
确定当前点击事件是否为点击埋点对应的埋点规则中设置的监听事件,如果是,获取所述点击事件的参数信息;
根据获取的参数信息与所述埋点规则中针对该点击事件配置的参数是否匹配来确定是否进行埋点。
6.根据权利要求2所述的方法,其特征在于,所述方法进一步包括:针对所述埋点规则中设置的模块标识对应的模块预定义第一函数,其中,所述第一函数用于监听模块状态变化;
当确定当前操作对应的埋点类型为模块埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
确定该模块的标识是否为所述埋点规则中设置的模块标识,如果是,监听第一函数;
根据第一函数返回的参数是否有效确定是否进行模块埋点。
7.根据权利要求2所述的方法,其特征在于,当确定当前操作对应的埋点类型为模块停留时间埋点时,所述根据该埋点类型对应的埋点规则确定是否需要埋点,包括:
获取当前运行模块的标识;
根据获取的模块的标识在所述埋点规则中是否被设置为需要进行模块停留时间埋点来确定针对所述标识所对应的模块是否需要进行时间停留埋点;
所述基于所述埋点类型对应的埋点参数进行埋点,包括:
获取所述标识对应的模块运行的起始时间和结束时间,并基于获取的起始时间和结束时间,以及所述埋点参数进行埋点。
8.一种前端埋点装置,其特征在于,所述装置包括:获取单元、确定单元和埋点单元;
所述获取单元,用于获取埋点类型对应的埋点规则,以及埋点参数;
所述确定单元,用于根据当前操作确定埋点类型;并根据确定的埋点类型对应的埋点规则确定是否需要埋点;
所述埋点单元,用于当所述确定单元确定需要埋点时,基于所述获取单元获取的埋点类型对应的埋点参数进行埋点。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910711585.0A CN110569185A (zh) | 2019-08-02 | 2019-08-02 | 一种前端埋点方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910711585.0A CN110569185A (zh) | 2019-08-02 | 2019-08-02 | 一种前端埋点方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110569185A true CN110569185A (zh) | 2019-12-13 |
Family
ID=68774379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910711585.0A Pending CN110569185A (zh) | 2019-08-02 | 2019-08-02 | 一种前端埋点方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569185A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352969A (zh) * | 2020-02-28 | 2020-06-30 | 广州市千钧网络科技有限公司 | 一种埋点数据分析方法、装置及电子设备 |
CN111427741A (zh) * | 2020-02-26 | 2020-07-17 | 中国平安人寿保险股份有限公司 | 埋点上报方法及相关产品 |
CN111858252A (zh) * | 2020-07-23 | 2020-10-30 | 中国工商银行股份有限公司 | 基于前端框架的动态埋点方法及装置 |
CN113779474A (zh) * | 2021-08-17 | 2021-12-10 | 中移(杭州)信息技术有限公司 | 网页埋点方法、装置、设备及计算机程序产品 |
CN114138630A (zh) * | 2021-11-10 | 2022-03-04 | 浪潮卓数大数据产业发展有限公司 | 一种基于es6装饰器的埋点数据收集方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013178094A1 (zh) * | 2012-05-31 | 2013-12-05 | 优视科技有限公司 | 页面显示方法及装置 |
CN107295050A (zh) * | 2016-04-01 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 前端用户行为统计方法及装置 |
CN107562620A (zh) * | 2017-08-24 | 2018-01-09 | 阿里巴巴集团控股有限公司 | 一种埋点自动设置方法和装置 |
-
2019
- 2019-08-02 CN CN201910711585.0A patent/CN110569185A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013178094A1 (zh) * | 2012-05-31 | 2013-12-05 | 优视科技有限公司 | 页面显示方法及装置 |
CN107295050A (zh) * | 2016-04-01 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 前端用户行为统计方法及装置 |
CN107562620A (zh) * | 2017-08-24 | 2018-01-09 | 阿里巴巴集团控股有限公司 | 一种埋点自动设置方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427741A (zh) * | 2020-02-26 | 2020-07-17 | 中国平安人寿保险股份有限公司 | 埋点上报方法及相关产品 |
CN111352969A (zh) * | 2020-02-28 | 2020-06-30 | 广州市千钧网络科技有限公司 | 一种埋点数据分析方法、装置及电子设备 |
CN111352969B (zh) * | 2020-02-28 | 2023-12-05 | 广州市千钧网络科技有限公司 | 一种埋点数据分析方法、装置及电子设备 |
CN111858252A (zh) * | 2020-07-23 | 2020-10-30 | 中国工商银行股份有限公司 | 基于前端框架的动态埋点方法及装置 |
CN111858252B (zh) * | 2020-07-23 | 2023-08-18 | 中国工商银行股份有限公司 | 基于前端框架的动态埋点方法及装置 |
CN113779474A (zh) * | 2021-08-17 | 2021-12-10 | 中移(杭州)信息技术有限公司 | 网页埋点方法、装置、设备及计算机程序产品 |
CN114138630A (zh) * | 2021-11-10 | 2022-03-04 | 浪潮卓数大数据产业发展有限公司 | 一种基于es6装饰器的埋点数据收集方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569185A (zh) | 一种前端埋点方法和装置 | |
US20080244616A1 (en) | System and method for message lifetime management | |
KR20140119240A (ko) | 다중 오픈 api 처리장치 및 방법 | |
CN110968478A (zh) | 日志采集方法、服务器及计算机存储介质 | |
CN109240664B (zh) | 一种采集用户行为信息的方法及终端 | |
CN109684008A (zh) | 卡片渲染方法、装置、终端及计算机可读存储介质 | |
CN111177601A (zh) | 页面渲染处理方法、装置、设备及可读存储介质 | |
CN112800309A (zh) | 基于http代理的爬虫系统及其实现方法 | |
CN111125170A (zh) | 一种微服务的跨服务数据获取方法、装置及微服务设备 | |
CN111176577A (zh) | 分布式块存储服务命令处理方法、装置、设备及介质 | |
CN108959393B (zh) | 动态图片处理方法、装置及存储介质 | |
CN111200645B (zh) | 业务请求处理方法、装置、设备及可读存储介质 | |
CN109669642B (zh) | 存储系统的节点加入方法、系统、装置及可读存储介质 | |
CN111444253A (zh) | 数据导入方法、装置、计算机可读存储介质和计算机设备 | |
CN106487884A (zh) | 数据传输方法及客户端 | |
CN116302250A (zh) | 界面复用方法、装置、电子设备和存储介质 | |
CN111581578B (zh) | 接口请求处理方法和装置 | |
CN113434152A (zh) | 软件开发方法、系统及可读存储介质 | |
CN111400060B (zh) | 设备联动方法、装置、服务器和介质 | |
CN109446462B (zh) | 基于页面的数据监控处理方法、装置、设备和存储介质 | |
CN109683994B (zh) | 确定视图构建时间的方法、装置、存储介质及电子设备 | |
CN106657316A (zh) | 一种消息撤回方法及装置 | |
CN102761527B (zh) | 集群中服务的访问方法及系统 | |
CN111913732A (zh) | 一种服务更新方法、装置及管理服务器、存储介质 | |
CN111125567A (zh) | 设备标记方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |