CN113641345A - 基于映射配置的埋点方法、装置、电子设备和存储介质 - Google Patents
基于映射配置的埋点方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113641345A CN113641345A CN202110932533.3A CN202110932533A CN113641345A CN 113641345 A CN113641345 A CN 113641345A CN 202110932533 A CN202110932533 A CN 202110932533A CN 113641345 A CN113641345 A CN 113641345A
- Authority
- CN
- China
- Prior art keywords
- target
- point code
- segment
- key value
- code
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Library & Information Science (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请提供了一种基于映射配置的埋点方法、装置、电子设备和存储介质,涉及埋点应用的技术领域,缓解了多处手动添加埋点,较为复杂繁琐的技术问题。该方法包括:将目标网站的脚本语言转换为抽象语法树集合,抽象语法树集合包括多个抽象语法树片段;从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性;将目标关键值与每个抽象语法树片段对应属性关键值进行匹配,确定每个埋点代码映射的目标注释片段;将每个埋点代码对应的可替换属性与每个埋点代码映射的目标注释片段结合,输出实体埋点代码。
Description
技术领域
本申请涉及埋点服务的技术领域,尤其是涉及一种基于映射配置的埋点方法、装置、电子设备和存储介质。
背景技术
埋点又称埋点分析,是一种良好的私有化部署数据采集方式。目前,通过在网页里植入埋点来获取用户数据手段已得到广泛使用。由于其具备良好的私隐性且具备无感知的特点,在用户可能触发的事件里植入相关埋点代码,就能完成定向的数据采集。
现今的埋点服务系统可自行开发也可使用第三方埋点服务,若网页中需要大量的埋点操作,则需要多处手动添加埋点,较为复杂繁琐。
发明内容
本申请的目的在于提供一种基于映射配置的埋点方法、装置、电子设备和存储介质,通过模板配置文件与注释片段的映射关系,实现埋点快速便捷化。
第一方面,本申请实施例提供了一种基于映射配置的埋点方法,所述方法包括:
将目标网站的脚本语言转换为抽象语法树集合,所述抽象语法树集合包括多个抽象语法树片段;
从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性;
将所述目标关键值与每个所述抽象语法树片段对应属性关键值进行匹配,确定每个所述埋点代码映射的目标注释片段;
将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合,输出实体埋点代码。
在一个可能的实现中,将目标网站的脚本语言转换为抽象语法树集合的步骤,包括:
通过编译器对目标网站的脚本语言进行扫描,生成映射数组,其中,所述映射数组包括多个映射对象,所述映射对象包括当前代码片段对应的文本形式、代码类型和所在位置;
根据所述脚本语言的语法规则将所述映射数组生成抽象语法树集合。
在一个可能的实现中,将所述目标关键值与每个所述抽象语法树片段对应属性关键值进行匹配,确定每个所述埋点代码映射的目标注释片段的步骤,包括:
从所述抽象语法树片段中确定第一目标注释片段;
将每个埋点代码对应的目标关键值与每个所述第一目标注释片段对应属性关键值进行匹配,确定每个所述埋点代码映射的第二目标注释片段。
在一个可能的实现中,从所述抽象语法树片段中确定第一目标注释片段的步骤,包括:
基于每个所述抽象语法树片段的按钮type属性确定第一目标注释片段,其中,每个所述抽象语法树片段对应的按钮type属性包括行注释或块注释。
在一个可能的实现中,将每个埋点代码对应的目标关键值与每个所述第一目标注释片段对应属性关键值进行匹配,确定每个所述埋点代码映射的第二目标注释片段的步骤,包括:
遍历每个所述第一目标注释片段,获取每个所述第一目标注释片段对应的属性关键值;
遍历预设埋点代码模板中每个埋点代码对应的目标关键值,重复执行以下处理:将第一埋点代码对应的第一目标关键值与每个所述第一目标注释片段对应的属性关键值进行匹配,映射出所述第一埋点代码对应的所述第二目标注释片段。
在一个可能的实现中,所述方法还包括:
对所述预设埋点代码模板中可替换属性进行配置和/或更改。
在一个可能的实现中,从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性的步骤之前,还包括:
将预设埋点代码模板中的每个埋点代码转换为JSON对象,其中,所述JSON对象包括至少一个可替换属性,每个所述JSON对象对应有相应的目标关键值,所述可替换属性按照所属的所述JSON对象对应唯一的目标关键值。
在一个可能的实现中,所述目标关键值通过第三方工具对所述JSON对象随机生成。
在一个可能的实现中,将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合,输出实体埋点代码的步骤之前,还包括:
将所述目标注释片段放置到动态批量植入埋点进程中进行处理。
在一个可能的实现中,将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合的步骤,包括:
将每个所述埋点代码映射的目标注释片段中,与所述可替换属性对应的代码文本标识,替换成所述可替换属性对应内容。
在一个可能的实现中,输出实体埋点代码的步骤,包括:
将所述动态批量植入埋点进程处理后的结果,与所述目标注释片段合并;
通过编译器将合并后的目标注释片段转换为实体埋点代码输出。
在一个可能的实现中,所述方法还包括:
基于所述实体埋点代码,采集针对所述目标网站的定向用户数据。
第二方面,提供了一种基于映射配置的埋点装置,包括:
转换模块,用于将目标网站的脚本语言转换为抽象语法树集合,所述抽象语法树集合包括多个抽象语法树片段;
获取模块,用于从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性;
映射模块,用于将所述目标关键值与每个所述抽象语法树片段对应属性关键值进行匹配,确定每个所述埋点代码映射的目标注释片段;
输出模块,用于将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合,输出实体埋点代码。
第三方面,本申请实施例又提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的第一方面所述方法。
第四方面,本申请实施例又提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述的第一方面所述方法。
本申请实施例带来了以下有益效果:
本申请实施例提供的一种基于映射配置的埋点方法、装置、电子设备和存储介质,能够实现埋点快速便捷化。
由于埋点过程往往会出现较多相似的代码部分,故而传统方式进行大量复制粘贴,工作量较大的同时,可能会造成失误,降低可靠性。本方案中,通过将脚本语言转换为抽象语法树,基于抽象语法树片段对应的属性关键值,与预设埋点代码模板中每个埋点代码对应的目标关键值的映射关系,确定出相匹配的目标注释片段,并将预设埋点代码模板中每个埋点代码对应的可替换属性与其对应映射的目标注释片段结合,输出实体埋点代码,无需知晓每个埋点代码在网站页面的所在位置等信息,可基于映射关系进行自动埋点,方便快捷。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的应用场景示意图;
图2为本申请实施例提供的一种基于映射配置的埋点方法的流程示意图;
图3为本申请实施例提供的一种基于映射配置的埋点装置的结构示意图;
图4示出了本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
目前,大部分情况会接入一些第三方埋点服务完成相关数据采集工作,如XX统计是较常用的第三方埋点服务,以下以其埋点植入过程为例来进一步进行叙述,其他埋点服务与该植入过程一致,在此不做更多叙述。
示例性地,通过在HTML结构的body标签里插入百度统计埋点初始化脚本,待页面加载完毕,会自动初始化埋点服务的实例,具体代码可如下所示:
此时会初始一个全局变量_hmt,该变量通过push()函数在用户触发指定事件时向XX统计服务器回传一些预设参数,然后通过XX统计系统实现数据分析并得到某些统计结果。push()函数的相关代码需在某些指定事件中手动添加方能生效,简单来说若整个网站有100处地方需添加埋点,那就得手动添加100次。其中,可以理解的是,push()函数是XX统计埋点服务里的一种函数方法,push()用于向服务器推送一次埋点记录。上述指定事件可指用户可操作到的事件,例如按钮的点击事件、双击事件、长按事件,鼠标的移动事件、滚动事件等。作为一种示例,向一个按钮的点击事件里添加一段push()函数的埋点代码,如下代码所示:
const btn=document.getElementById(“btn”);
Btn.addEventListener(“click”,()<=>{
//do something
//_hmt.push(“_trackEvent”,category,action);
//category:需监控目标的类型名称
//action:用户与网页交互的动作名称
_hmt.push(“_trackEvent”,“登录按钮”,“登录操作-跳转到个人中心”);});
其中,上述代码中的_hmt.push()就会在用户触发按钮的点击事件时,向XX统计服务器回传预设参数,即在执行预设逻辑完毕(跳转到个人中心),继续执行XX统计的埋点事件。其中,返回的预设参数是预先定义好参数,对于上述代码示例来说,该预设参数为“登录按钮”和“登录操作-跳转到个人中心”,此时XX统计埋点服务的服务器会记录下这些数据。
但若针对较为老旧的前端项目添加XX统计的埋点,此种在用户可操作的指定事件中添加push()函数的埋点代码的方式,缺乏灵活性,具体可体现在以下几点:
1、由于该添加过程不仅处理一次,而是依据项目需求而定,且埋点植入方式全为手动操作,若涉及较多处埋点,可能涉及到大量的无脑复制粘贴操作,极有可能在植入代码时遗忘或复制信息错误等可能,使整体植入流程变得不灵活也不可靠。
2、经发明人研究发现,埋点植入本身并不属于项目需求里的核心开发流程,只是为了采集用户数据而实行的某种关联方式,若在开发阶段大量植入埋点代码,不仅污染全局代码所实现的逻辑需求也使后期的维护成本随着时间递增而递增。
3、埋点植入通常在开发阶段的最终步骤才会植入,因此在测试阶段可能会遇到不停地修改埋点信息的需求,而此时也只能在下次的开发阶段修改,此时也是一种不灵活的表现。
4、埋点植入整体流程与开发阶段的业务开发流程紧密耦合从而导致无法分离,若遇上埋点服务升级或更换,那势必也会损害到开发阶段的业务流程,使得业务代码总是受到影响。
基于此,本申请实施例提供了一种基于映射配置的埋点方法、装置、电子设备和存储介质,通过该方法可以缓解手动添加埋点,工作量较大和可靠性较低的技术问题。
例如,如图1所示,图1为本申请实施例提供的应用场景示意图。该应用场景可以包括智能终端(例如手机102)和服务器101,该智能终端可以通过有线网络或无线网络与服务器101进行通信。其中智能终端用于运行网站页面,通过该网站页面,可以与服务器101进行交互,以实现对服务器101中的内容进行编辑。
下面结合附图对本申请实施例进行进一步地介绍。
图2为本申请实施例提供的一种基于映射配置的埋点方法的流程示意图。其中,该方法应用于配置有浏览器的智能终端、安卓系统等智能设备或智能系统,且该浏览器采用第三方埋点服务。如图2所示,该方法包括:
步骤S102,将目标网站的脚本语言转换为抽象语法树集合,其中,抽象语法树集合包括多个抽象语法树片段。
需要说明的是,目标网站为当前浏览器上显示或运行的网站页面。该目标网站的脚本语言是JavaScript代码,用于开发一切基于浏览器内核的应用。抽象语法树(AbstractSyntax Code,AST),是源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
例如,本步骤中,可将该目标网站的脚本语言的表现形式转换为AST。该目标网站的脚本语言并不局限于JavaScript代码,还可包括能够转换成AST的其他代码表现形式。
步骤S104,从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性。
其中,埋点代码也属于JavaScript代码,埋点服务也只是一种网站业务需求。预设埋点代码模板中可预先配置需要进行埋点植入的代码对应的目标关键值和可替换属性。目标关键值用于将预设埋点代码与抽象语法树中的对应代码片段进行映射关联。可替换属性可理解为每个埋点代码之间存在差异的部分,或,用户在预设埋点代码模板中需要配置修改的部分。
步骤S106,将目标关键值与每个抽象语法树片段对应属性关键值进行匹配,确定每个埋点代码映射的目标注释片段。
需要说明的是,基于该目标关键值与属性关键值进行匹配成功的抽象语法树片段,即为该目标关键值对应的埋点代码映射的目标注释片段。
步骤S108,将每个埋点代码对应的可替换属性与每个埋点代码映射的目标注释片段结合,输出实体埋点代码。
其中,经发明人研究发现,统计埋点服务的埋点植入方式针对大部分相同的代码,其中只有参数部分不同的需求,将以某种形式插入而改变的仅仅是参数部分,替代传统对需要每个埋点进行大量复制粘贴的操作。例如,本步骤中,用户通过预设设置待植入埋点代码的可替换属性,基于关键值映射到对应的目标注释片段,将每个带植入埋点代码对应的可替换属性与其映射的目标注释片段结合,实现较为便捷的埋点代码植入,无需大量复制粘贴。
在实际应用的优选实施例中,由于埋点过程往往会出现较多相似的代码部分,故而传统方式进行大量复制粘贴,工作量较大的同时,可能会造成失误,降低可靠性。本方案中,通过将脚本语言转换为抽象语法树,基于抽象语法树片段对应的属性关键值,与预设埋点代码模板中每个埋点代码对应的目标关键值的映射关系,确定出相匹配的目标注释片段,并将预设埋点代码模板中每个埋点代码对应的可替换属性与其对应映射的目标注释片段结合,输出实体埋点代码,无需知晓每个埋点代码在网站页面的所在位置等信息,可基于映射关系进行自动埋点,方便快捷。
本发明实施例在开发阶段源码上绝不掺和添加任何埋点服务代码,而是在生产阶段上将埋点植入到打包后的代码中,将埋点植入整体流程与业务开发流程完全分离,保障了开发阶段源码的干净行性、独立性和唯一性,又能让埋点植入的需求得到实现。本发明技术方案的最终目的是以自动化构建的方式优雅地将埋点植入整体流程与业务开发流程完全分离,使两个独立的流程不受互相影响而引发一些在项目质量保障上的问题,在项目代码最终打包输出的过程中将两者合并,在开发者角度看待两者都是完全独立且互不影响,在用户角度看埋点植入已满足项目需求且能正确触发。
以下实施例以XX统计的埋点代码为例进行说明,当然也可使用其他第三方埋点服务。本发明实施例基于自定义的预设埋点代码模板,可扩展到任何第三方埋点服务。
在一些实施例中,可以基于抽象语法树,将网站页面的脚本语言进行转换,以使后续步骤中实现批量埋点代码的植入,达到较为便捷快速的效果。作为一个示例,上述步骤S102可以包括如下步骤:
步骤1.1),通过编译器对目标网站的脚本语言进行扫描,生成映射数组,其中,映射数组包括多个映射对象。
示例性地,通过编译器babel的词法分析扫描脚本语言JavaScript代码的每一个字符,依据编译器babel的分词法则并去除空格注释,生成映射对应Token,将Token组合成Token映射数组。Token是一个对象,可用于描述当前代码片段在整个代码中的所在位置和记录当前对象的一些信息。
需要说明的是,Token映射对象是当前代码片段的映射,从中可知对应代码的文本形式、代码类型、所在位置等信息。可以理解为,脚本语言代码与该映射对象能够实现相互转换,例如可通过映射对象中表征的信息的组合将映射对象Token转换为代码,反之亦可。
步骤1.2),根据脚本语言的语法规则将映射数组生成抽象语法树集合。
其中,抽象语法树集合为抽象语法树片段组成的数组。在一些实施例中,基于上述步骤1.1)-步骤1.2),可获取到脚本语言的所有注释片段对应的AST片段组成的数组,标记为A。
在一些实施例中,可以基于关键值的匹配,实现待埋点代码与脚本的目标注释片段的映射,以实现埋点代码的快速植入效果。作为一个示例,上述步骤S106可以包括如下步骤:
步骤2.1),从抽象语法树片段中确定第一目标注释片段。
作为一种可选的实施例,基于上述步骤2.1)还可以包括如下步骤:
步骤2.1.1),基于每个抽象语法树片段的按钮type属性确定第一目标注释片段,其中,每个抽象语法树片段对应的按钮type属性包括行注释或块注释。
其中,按钮type属性用于定义图像形式的提交按钮。
示例性地,通过编译器babel的语法分析解析Token映射数组,依据JavaScript语法法则生成抽象语法树集合,抽象语法树集合包含了当前代码的抽象语法树片段。将脚本语言换成抽象语法树集合后,抽象语法树片段对应的按钮type属性为CommentLine(行注释)或CommentBlock(块注释),因此可通过这个按钮type属性特征找出所有符合要求的第一目标注释片段。作为一种可选的实施例,本发明实施例使用按钮type属性为行注释的标识作为目标注释片段特征。
步骤2.2),将每个埋点代码对应的目标关键值与每个第一目标注释片段对应属性关键值进行匹配,确定每个埋点代码映射的第二目标注释片段。
在一些实施例中,基于JSON对象的特性,以实现埋点代码的快速植入效果。作为一个示例,上述步骤S104之前,还可以包括如下步骤:
步骤3.1),将预设埋点代码模板中的每个埋点代码转换为JSON对象,其中,JSON对象包括至少一个可替换属性,每个JSON对象对应有相应的目标关键值,可替换属性按照所属的JSON对象对应唯一的目标关键值。
其中,JSON的全称是JavaScript Object Notation,JSON是JavaScript的一种对象表示法,JSON可以理解为一种轻量级的文本数据交换格式,它比XML格式更小、更快,更易解析。
下面对本发明实施例所用到的预设埋点代码模板及其相关使用方式进行介绍。
在一些实施例中,预设埋点代码模板可体现为埋点Excel表格文件形式,其主体内容如下表1所示。该表格中的埋点内容也可能很复杂,但不妨碍本发明实施例的高度自定义性,因为整体的埋点插入后续都会使用模板组合的方式自定义埋点植入内容,使埋点更具灵活性。
表1
示例性地,上述表格中的每个埋点代码对应的目标关键值Key唯一。在实际应用过程中,存在很多第三方工具库,可将上述表格转换成这样的JSON对象,标记为B。若表格中的A列页面项可不使用,则此时的目标关键值Key通过这些第三方工具随机生成的ID是唯一的,转换后的JSON对象如以下形式:
其中,上述表格的埋点内容JSON化后,此时可定义植入埋点代码的形式,以上述XX统计埋点示例为例,其触发埋点的代码形式为_hmt.push(“trackEvent”,target,action)。那么植入的埋点代码如下所示:
_hmt.push(“_trackEvent”,$target,$action)
其中,$target为上述JSON对象单个目标关键值Key的target,$action为上述JSON对象单个目标关键值Key的action。
在一些实施例中,在第一目标注释片段的基础上,再根据关键值的匹配,映射最终的第二目标注释片段,以使后续步骤中应用该第二目标注释片段输出,实现批量埋点代码的植入。作为一个示例,上述实施例中的步骤2.2)还可以包括如下步骤:
步骤2.2.1),遍历每个第一目标注释片段,获取每个第一目标注释片段对应的属性关键值;
步骤2.2.2),遍历预设埋点代码模板中每个埋点代码对应的目标关键值,重复执行以下处理:将第一埋点代码对应的第一目标关键值与每个第一目标注释片段对应的属性关键值进行匹配,映射出第一埋点代码对应的第二目标注释片段。
作为一种示例,若目标关键值Key为ab,那么输出的代码文本就是_hmt.push(“_trackEvent”,“_登录按钮”,“_登录用户”)。
在一些实施例中,在第一目标注释片段的基础上,再根据关键值的匹配,映射最终的第二目标注释片段,以使后续步骤中应用该第二目标注释片段输出,实现批量埋点代码的植入。作为一个示例,上述实施例中的步骤S108还可以包括如下步骤:
步骤4.1),将目标注释片段放置到动态批量植入埋点进程中进行处理。
当全部代码的抽象语法树集合生成后,在接下来遍历抽象语法树片段的过程中依据上述属性特征找到符合条件的目标注释片段(对应代码中的所有单行注释)。将符合条件的目标注释片段放到动态批量植入埋点流程中处理,待处理结果返回后将其合并到原来的目标注释片段中。最终编译器会将处理过的目标注释片段转换成最终的输出代码。此时就可将埋点以自动化、动态化、批量化的方式准确无误地植入到最终的输出代码中且不污染原来的开发源代码。
步骤4.2),将每个埋点代码映射的目标注释片段中,与可替换属性对应的代码文本标识,替换成可替换属性对应内容。
不管代码的埋点内容多复杂,均可使用$name的形式将代码文本里的标识替换成JSON对象单个埋点代码对应的目标关键值Key里的某个可替换属性,这样就能实现高度自定义埋点植入内容。而从头到尾代码文本也仅仅是一个包含一个或多个$name表示的文本内容。
对于前述实施例获取到的由所有脚本语言对应的AST片段组成的数组A,此时A包含了全部type属性为行注释的AST片段(对应代码中的所有单行注释)。若本发明实施例定义的目标注释文本的单行注释形式为//track:key,那么上述目标关键值Key为ab对应的单行注释,进行替换后为//track:ab。因此A收集的AST片段其实都是对应着//track:ab、//track:cd、//track:ef等单行注释。
简单来说,通过目标关键值Key去映射对应的注释内容,无论注释内容怎样变化,它始终指向其对应的目标关键值Key,所以不管埋点需求(预设埋点模板中的埋点内容)如何变化,在最终打包输出代码时,都会通过指定的目标关键值Key将该埋点内容映射到实体代码中。
步骤4.3),将动态批量植入埋点进程处理后的结果,与目标注释片段合并。
其中,这个过程无需开发者关注,本发明实施例能自动动态批量将注释内容搬运过去与实体代码合并在一起。
在实际应用过程中,可遍历每一个抽象语法树片段,可拿到它的属性值value,通过正则表达式“/^\/\/track:(.+?)$/”提取目标注释片段中单行注释里的属性关键Key值,对于上述示例来说就是ab、cd、ef等。此时在B中可通过obj[key]是一种快速访问对象属性对应属性值的方式,获取目标关键值,如B.ab、B.cd、B.ef,时间复杂度为1。此时结合提前定义好的埋点代码文本生成最终的代码。以key=ab为例,它对应的注释内容参数为{target:"登录按钮",action:"登录用户"},那么生成的最终代码是_hmt.push("_trackEvent","登录按钮","登录用户")。
需要说明的是,之前生成B使用JSON对象而不使用预设埋点表格对应的数组,是因为访问数组里的指定属性需遍历数组成员且进行判断与读取,时间复杂度为N,因此B被保存为JSON对象的形式时,获取到对应的注释内容参数{target:“xxx”,action:“yyy”},更加便捷。
步骤4.4),通过编译器将合并后的目标注释片段转换为实体埋点代码输出。
此时将该值替换原来的value,并将type属性修改成调用表达式CallExpression。这样处理的意义是将原来的单行注释(预设埋点表格中的埋点内容)变为实体代码,在最终输出代码时将预设埋点表格中的埋点内容替换成指定实体代码。当遍历完A,所有的抽象语法树片段对应的实体代码就会从注释片段变成真正的埋点代码了。
本发明实施例基于埋点配置映射出实体代码,而这个过程实现自动化、动态化、批量化。从形式上埋点植入代码不会影响到开发阶段的源码,最终打包输出的代码,也可对用户浏览网页时的用户行为进行采集,因此既保障了源码的简洁性独立性专一性,也实现了埋点植入的需求。
在一些实施例中,可以基于本发明实施例输出的实体埋点代码进行用户数据采集,以实现对用户习惯等数据进行统计的目的。作为一个示例,上述方法可以包括如下步骤:
步骤5.1),基于实体埋点代码,采集针对目标网站的定向用户数据。
这里,基于快速植入的埋点代码,能够根据用户行为,对定向用户数据进行采集,例如,用户点击A按钮,此时向统计服务器返回参数,以使统计服务器分析用户行为数据,并可作为相关业务平台的数据支撑。
在一些实施例中,可以自定义对埋点内容进行更改,以实现快速完成多处不同埋点的目的。作为一个示例,上述方法可以包括如下步骤:
步骤6.1),对预设埋点代码模板中可替换属性进行配置和/或更改。
示例性地,可通过对上述表1中A、B、C等列中对应的可替换属性内容进行更改,或对D列中可替换属性进行添加配置,以按照相应配置生成对应的埋点代码并植入,满足相应的埋点统计需求。
相比传统的手动植入埋点代码的技术方案,本发明实施例具有核心主题自动化、动态化和批量化三大特点,充分利用前端工程化的手段去优化与解决问题,在传统埋点植入方式上做新的突破。相比常规技术方案,本发明技术方案具备以下落地优点:
1、埋点植入方式变为全自动,以工程化的思想解决了常规技术方案的缺陷,通过自动化的方式取代手动复制粘贴操作,提高开发者体验。
2、将埋点植入整体流程与业务开发流程完全分离,使两个独立的流程不受互相影响而引发一些在项目质量保障上的问题,在项目代码最终打包输出的过程中将两者合并,在开发者角度看待两者都是完全独立且互不影响,在用户角度看埋点植入已满足项目需求且能正确触发。
3、开发阶段的源码得以保留并以独立且不受污染的形式存在,整体代码质量不受后期因植入埋点而使业务逻辑与埋点产生强烈的耦合关系,而最终输出的代码里包含了埋点需求,优雅地实现埋点植入。
4、通过JSON配置文件或埋点代码模板文件完成页面所有的配置,无需关注页面里目标元素的位置,只需标识好目标关键值Key,在开发阶段为指定事件的目标注释片段(单行注释)添加相应的属性关键值Key,就能将两者关联起来,后续有任何埋点需求都可直接修改JSON配置文件或埋点代码模板文件,使得所有埋点得以集中管理,每次重新打包项目代码就能将更新的埋点需求植入到最终输出的代码中。
5、整个过程使用了脚本动态拼接埋点代码与植入埋点代码,充分利用前端工程化的手段去优化与解决问题,在传统埋点植入方式上做新的突破,是非常值得推广到所有需部署埋点的前端项目中。
图3提供了一种基于映射配置的埋点装置的结构示意图。该装置可以应用于配置有浏览器的智能终端、安卓系统等智能设备或智能系统,且该浏览器采用第三方埋点服务。如图3所示,基于映射配置的埋点装置300包括:
转换模块301,用于将目标网站的脚本语言转换为抽象语法树集合,所述抽象语法树集合包括多个抽象语法树片段;
获取模块302,用于从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性;
映射模块303,用于将所述目标关键值与每个所述抽象语法树片段对应属性关键值进行匹配,确定每个所述埋点代码映射的目标注释片段;
输出模块304,用于将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合,输出实体埋点代码。
在一些实施例中,转换模块301还具体用于通过编译器对目标网站的脚本语言进行扫描,生成映射数组,其中,所述映射数组包括多个映射对象,所述映射对象包括当前代码片段对应的文本形式、代码类型和所在位置;根据所述脚本语言的语法规则将所述映射数组生成抽象语法树集合。
在一些实施例中,映射模块303还具体用于从所述抽象语法树片段中确定第一目标注释片段;将每个埋点代码对应的目标关键值与每个所述第一目标注释片段对应属性关键值进行匹配,确定每个所述埋点代码映射的第二目标注释片段。
在一些实施例中,映射模块303还具体用于基于每个所述抽象语法树片段的按钮type属性确定第一目标注释片段,其中,每个所述抽象语法树片段对应的按钮type属性包括行注释或块注释。
在一些实施例中,映射模块303还具体用于遍历每个所述第一目标注释片段,获取每个所述第一目标注释片段对应的属性关键值;遍历预设埋点代码模板中每个埋点代码对应的目标关键值,重复执行以下处理:将第一埋点代码对应的第一目标关键值与每个所述第一目标注释片段对应的属性关键值进行匹配,映射出所述第一埋点代码对应的所述第二目标注释片段。
在一些实施例中,所述装置还包括,自定义模块(图中未示出),用于对所述预设埋点代码模板中可替换属性进行配置和/或更改。
在一些实施例中,从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性的步骤之前,转换模块301还具体用于将预设埋点代码模板中的每个埋点代码转换为JSON对象,其中,所述JSON对象包括至少一个可替换属性,每个所述JSON对象对应有相应的目标关键值,所述可替换属性按照所属的所述JSON对象对应唯一的目标关键值。
在一些实施例中,所述目标关键值通过第三方工具对所述JSON对象随机生成。
在一些实施例中,将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合,输出实体埋点代码的步骤之前,输出模块304还具体用于将所述目标注释片段放置到动态批量植入埋点进程中进行处理。
在一些实施例中,输出模块304还具体用于将每个所述埋点代码映射的目标注释片段中,与所述可替换属性对应的代码文本标识,替换成所述可替换属性对应内容。
在一些实施例中,输出模块304还具体用于将所述动态批量植入埋点进程处理后的结果,与所述目标注释片段合并;通过编译器将合并后的目标注释片段转换为实体埋点代码输出。
在一些实施例中,所述装置还包括应用模块(图中未示出),基于所述实体埋点代码,采集针对所述目标网站的定向用户数据。
本申请实施例提供的基于映射配置的埋点装置,与上述实施例提供的基于映射配置的埋点方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本申请实施例提供的一种电子设备,如图4所示,电子设备400包括存储器401、处理器402,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例提供的方法的步骤。
参见图4,电子设备还包括:总线403和通信接口404,处理器402、通信接口404和存储器401通过总线403连接;处理器402用于执行存储器401中存储的可执行模块,例如计算机程序。
其中,存储器401可能包含高速随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口404(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线403可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器401用于存储程序,所述处理器402在接收到执行指令后,执行所述程序,前述本申请任一实施例揭示的过程定义的装置所执行的方法可以应用于处理器402中,或者由处理器402实现。
处理器402可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器402中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器402可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器402读取存储器401中的信息,结合其硬件完成上述方法的步骤。
对应于上述方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述基于映射配置的埋点方法的步骤。
本申请实施例所提供的基于映射配置的埋点装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
再例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述基于映射配置的埋点方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (15)
1.一种基于映射配置的埋点方法,其特征在于,所述方法包括:
将目标网站的脚本语言转换为抽象语法树集合,所述抽象语法树集合包括多个抽象语法树片段;
从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性;
将所述目标关键值与每个所述抽象语法树片段对应属性关键值进行匹配,确定每个所述埋点代码映射的目标注释片段;
将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合,输出实体埋点代码。
2.根据权利要求1所述的方法,其特征在于,将目标网站的脚本语言转换为抽象语法树集合的步骤,包括:
通过编译器对目标网站的脚本语言进行扫描,生成映射数组,其中,所述映射数组包括多个映射对象,所述映射对象包括当前代码片段对应的文本形式、代码类型和所在位置;
根据所述脚本语言的语法规则将所述映射数组生成抽象语法树集合。
3.根据权利要求1所述的方法,其特征在于,将所述目标关键值与每个所述抽象语法树片段对应属性关键值进行匹配,确定每个所述埋点代码映射的目标注释片段的步骤,包括:
从所述抽象语法树片段中确定第一目标注释片段;
将每个埋点代码对应的目标关键值与每个所述第一目标注释片段对应属性关键值进行匹配,确定每个所述埋点代码映射的第二目标注释片段。
4.根据权利要求3所述的方法,其特征在于,从所述抽象语法树片段中确定第一目标注释片段的步骤,包括:
基于每个所述抽象语法树片段的按钮type属性确定第一目标注释片段,其中,每个所述抽象语法树片段对应的按钮type属性包括行注释或块注释。
5.根据权利要求3所述的方法,其特征在于,将每个埋点代码对应的目标关键值与每个所述第一目标注释片段对应属性关键值进行匹配,确定每个所述埋点代码映射的第二目标注释片段的步骤,包括:
遍历每个所述第一目标注释片段,获取每个所述第一目标注释片段对应的属性关键值;
遍历预设埋点代码模板中每个埋点代码对应的目标关键值,重复执行以下处理:将第一埋点代码对应的第一目标关键值与每个所述第一目标注释片段对应的属性关键值进行匹配,映射出所述第一埋点代码对应的所述第二目标注释片段。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述预设埋点代码模板中可替换属性进行配置和/或更改。
7.根据权利要求1所述的方法,其特征在于,从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性的步骤之前,还包括:
将预设埋点代码模板中的每个埋点代码转换为JSON对象,其中,所述JSON对象包括至少一个可替换属性,每个所述JSON对象对应有相应的目标关键值,所述可替换属性按照所属的所述JSON对象对应唯一的目标关键值。
8.根据权利要求7所述的方法,其特征在于,所述目标关键值通过第三方工具对所述JSON对象随机生成。
9.根据权利要求1所述的方法,其特征在于,将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合,输出实体埋点代码的步骤之前,还包括:
将所述目标注释片段放置到动态批量植入埋点进程中进行处理。
10.根据权利要求1或9所述的方法,其特征在于,将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合的步骤,包括:
将每个所述埋点代码映射的目标注释片段中,与所述可替换属性对应的代码文本标识,替换成所述可替换属性对应内容。
11.根据权利要求10所述的方法,其特征在于,输出实体埋点代码的步骤,包括:
将所述动态批量植入埋点进程处理后的结果,与所述目标注释片段合并;
通过编译器将合并后的目标注释片段转换为实体埋点代码输出。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于所述实体埋点代码,采集针对所述目标网站的定向用户数据。
13.一种基于映射配置的埋点装置,其特征在于,包括:
转换模块,用于将目标网站的脚本语言转换为抽象语法树集合,所述抽象语法树集合包括多个抽象语法树片段;
获取模块,用于从预设埋点代码模板中获取每个埋点代码对应的目标关键值和可替换属性;
映射模块,用于将所述目标关键值与每个所述抽象语法树片段对应属性关键值进行匹配,确定每个所述埋点代码映射的目标注释片段;
输出模块,用于将每个所述埋点代码对应的可替换属性与每个所述埋点代码映射的目标注释片段结合,输出实体埋点代码。
14.一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至12任一项所述的方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述权利要求1至12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110932533.3A CN113641345A (zh) | 2021-08-13 | 2021-08-13 | 基于映射配置的埋点方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110932533.3A CN113641345A (zh) | 2021-08-13 | 2021-08-13 | 基于映射配置的埋点方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113641345A true CN113641345A (zh) | 2021-11-12 |
Family
ID=78421628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110932533.3A Pending CN113641345A (zh) | 2021-08-13 | 2021-08-13 | 基于映射配置的埋点方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113641345A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107436832A (zh) * | 2016-05-27 | 2017-12-05 | 阿里巴巴集团控股有限公司 | 一种动态埋点的方法、装置及电子设备 |
CN110209386A (zh) * | 2019-05-17 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 数据埋点的设置方法、埋点数据的获取方法及装置 |
CN110908880A (zh) * | 2019-11-01 | 2020-03-24 | 北京金山安全软件有限公司 | 埋点代码注入方法、事件上报方法及其相关设备 |
CN111190807A (zh) * | 2018-11-14 | 2020-05-22 | 杭州萤石软件有限公司 | 一种埋点测试方法及设备 |
CN111241444A (zh) * | 2020-01-09 | 2020-06-05 | 深圳壹账通智能科技有限公司 | 网页埋点代码添加方法、装置、计算机设备及存储介质 |
CN112015467A (zh) * | 2020-09-04 | 2020-12-01 | 杭州网易再顾科技有限公司 | 埋点方法、介质、装置和计算设备 |
-
2021
- 2021-08-13 CN CN202110932533.3A patent/CN113641345A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107436832A (zh) * | 2016-05-27 | 2017-12-05 | 阿里巴巴集团控股有限公司 | 一种动态埋点的方法、装置及电子设备 |
CN111190807A (zh) * | 2018-11-14 | 2020-05-22 | 杭州萤石软件有限公司 | 一种埋点测试方法及设备 |
CN110209386A (zh) * | 2019-05-17 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 数据埋点的设置方法、埋点数据的获取方法及装置 |
CN110908880A (zh) * | 2019-11-01 | 2020-03-24 | 北京金山安全软件有限公司 | 埋点代码注入方法、事件上报方法及其相关设备 |
CN111241444A (zh) * | 2020-01-09 | 2020-06-05 | 深圳壹账通智能科技有限公司 | 网页埋点代码添加方法、装置、计算机设备及存储介质 |
CN112015467A (zh) * | 2020-09-04 | 2020-12-01 | 杭州网易再顾科技有限公司 | 埋点方法、介质、装置和计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3433732B1 (en) | Converting visual diagrams into code | |
CN110806863A (zh) | 接口文档生成方法及装置、电子设备、存储介质 | |
CN110688307B (zh) | JavaScript代码检测方法、装置、设备和存储介质 | |
CN110532020A (zh) | 一种微服务编排的数据处理方法、装置及系统 | |
CN110955428A (zh) | 一种页面显示方法、装置、电子设备及介质 | |
CN109308254B (zh) | 一种测试方法、装置及测试设备 | |
CN109241026B (zh) | 数据管理的方法、装置及系统 | |
CN111831384A (zh) | 语言切换方法和装置、设备及存储介质 | |
CN111309332A (zh) | 文件内容按需加载方法、装置及电子设备、存储介质 | |
CN111767217A (zh) | Js单元测试案例生成方法及装置 | |
CN110109671A (zh) | 一种webpack标签尺寸样式转换方法及装置 | |
CN103136100A (zh) | 一种Android测试的方法和系统 | |
CN114398138B (zh) | 界面生成方法、装置、计算机设备和存储介质 | |
CN113760266B (zh) | 一种功能模块文件的创建方法、创建装置和电子设备 | |
US20160266875A1 (en) | Software automatic configuration apparatus, software automatic configuration method, and storage media | |
US20160292067A1 (en) | System and method for keyword based testing of custom components | |
CN113076094A (zh) | 前端组件构建方法、装置及电子设备 | |
CN117667607A (zh) | 可视化埋点方法、装置及存储介质 | |
CN108874977B (zh) | 页面数据提取方法、装置、存储介质及电子设备 | |
CN113641345A (zh) | 基于映射配置的埋点方法、装置、电子设备和存储介质 | |
CN116431467A (zh) | 页面测试方法、装置、设备及介质 | |
CN115794214A (zh) | 应用模块元数据管理方法、设备、存储介质及装置 | |
CN111367519A (zh) | 页面零件化使用方法、装置、计算设备及计算机存储介质 | |
CN114296726A (zh) | 一种代码生成方法、装置、计算机设备和存储介质 | |
CN112114794A (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 |