本申請涉及計算機(jī)前端,具體而言,涉及一種前端的數(shù)據(jù)監(jiān)控方法、裝置、計算機(jī)程序產(chǎn)品和前端數(shù)據(jù)采集系統(tǒng)。
背景技術(shù):
1、隨著互聯(lián)網(wǎng)用戶的增長,數(shù)據(jù)采集可以說是落地整個數(shù)據(jù)驅(qū)動增長最基礎(chǔ)、也是最關(guān)鍵的一步,因?yàn)橹挥胁杉臄?shù)據(jù)足夠準(zhǔn)確,才能通過數(shù)據(jù)分析做出正確的決策,進(jìn)而促進(jìn)活動、產(chǎn)品及公司的整體增長,意義是十分重大的。
2、目前前端的數(shù)據(jù)收集方式都是采用埋點(diǎn)的方式,每一個控件都需要進(jìn)行埋點(diǎn),這樣如果增加新的埋點(diǎn)或更新埋點(diǎn)方案,都需要在前端修改代碼并重新部署,工作量較大,導(dǎo)致成本較高。
技術(shù)實(shí)現(xiàn)思路
1、本申請的主要目的在于提供一種前端的數(shù)據(jù)監(jiān)控方法、裝置、計算機(jī)程序產(chǎn)品和前端數(shù)據(jù)采集系統(tǒng),以至少解決現(xiàn)有技術(shù)中采用埋點(diǎn)收集前端數(shù)據(jù)的方式成本較高的問題。
2、為了實(shí)現(xiàn)上述目的,根據(jù)本申請的一個方面,提供了一種前端的數(shù)據(jù)監(jiān)控方法,包括:獲取前端的瀏覽器的原生任務(wù),其中,所述原生任務(wù)至少包括宏任務(wù)、微任務(wù)、事件任務(wù)、文檔對象模型事件任務(wù)中的一個或者多個;將所述原生任務(wù)進(jìn)行包裹,封裝在house.js庫中;在監(jiān)控到任務(wù)執(zhí)行需求的情況下,調(diào)用所述house.js庫捕獲前端數(shù)據(jù),以使得通過采用所述house.js庫監(jiān)控前端的任務(wù)。
3、可選地,在獲取前端的瀏覽器的原生任務(wù)之后,所述方法還包括:創(chuàng)建變量,其中,所述變量和所述原生任務(wù)一一對應(yīng);將所述原生任務(wù)保存在對應(yīng)的所述變量中,其中,在需要調(diào)用所述原生任務(wù)的情況下,通過所述變量調(diào)用所述原生任務(wù)。
4、可選地,將所述原生任務(wù)進(jìn)行包裹,封裝在house.js庫中,包括:獲取重寫原生任務(wù),其中,所述重寫原生任務(wù)為在所述原生任務(wù)的調(diào)用路徑上再次添加封裝后得到的重寫后的原生任務(wù);采用所述重寫原生任務(wù)替換所述原生任務(wù),得到所述house.js庫。
5、可選地,在監(jiān)控到任務(wù)執(zhí)行需求的情況下,調(diào)用所述house.js庫捕獲前端數(shù)據(jù),包括:在任務(wù)執(zhí)行前,調(diào)用觸發(fā)函數(shù)beforetask;通過所述觸發(fā)函數(shù)beforetask,捕獲前端數(shù)據(jù),并將任務(wù)狀態(tài)記錄為執(zhí)行前。
6、可選地,在監(jiān)控到任務(wù)執(zhí)行需求的情況下,調(diào)用所述house.js庫捕獲前端數(shù)據(jù),包括:在任務(wù)執(zhí)行中,調(diào)用觸發(fā)函數(shù)runtask;通過所述觸發(fā)函數(shù)runtask,捕獲前端數(shù)據(jù),并將任務(wù)狀態(tài)記錄為執(zhí)行中。
7、可選地,在監(jiān)控到任務(wù)執(zhí)行需求的情況下,調(diào)用所述house.js庫捕獲前端數(shù)據(jù),包括:在任務(wù)執(zhí)行后,調(diào)用觸發(fā)函數(shù)aftertask;通過所述觸發(fā)函數(shù)aftertask,捕獲前端數(shù)據(jù),并將任務(wù)狀態(tài)記錄為執(zhí)行后。
8、可選地,在將所述原生任務(wù)進(jìn)行包裹,封裝在house.js庫中之后,所述方法還包括:通過script標(biāo)簽和/或npm包,在前端系統(tǒng)中引入所述house.js庫。
9、根據(jù)本申請的另一方面,提供了一種前端的數(shù)據(jù)監(jiān)控裝置,包括:獲取單元,用于獲取前端的瀏覽器的原生任務(wù),其中,所述原生任務(wù)至少包括宏任務(wù)、微任務(wù)、事件任務(wù)、文檔對象模型事件任務(wù)中的一個或者多個;封裝單元,用于將所述原生任務(wù)進(jìn)行包裹,封裝在house.js庫中;捕獲單元,用于在監(jiān)控到任務(wù)執(zhí)行需求的情況下,調(diào)用所述house.js庫捕獲前端數(shù)據(jù),以使得通過采用所述house.js庫監(jiān)控前端的任務(wù)。
10、根據(jù)本申請的再一方面,提供了一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)任意一種所述前端的數(shù)據(jù)監(jiān)控方法的步驟。
11、根據(jù)本申請的又一方面,提供了一種前端數(shù)據(jù)采集系統(tǒng),包括:一個或多個處理器,存儲器,以及一個或多個程序,其中,所述一個或多個程序被存儲在所述存儲器中,并且被配置為由所述一個或多個處理器執(zhí)行,所述一個或多個程序包括用于執(zhí)行任意一種所述的前端的數(shù)據(jù)監(jiān)控方法。
12、應(yīng)用本申請的技術(shù)方案,獲取瀏覽器原生的異步任務(wù)方法,然后對這些方法進(jìn)行包裹封裝到house庫中,當(dāng)執(zhí)行任務(wù)時,通過調(diào)用house庫中的封裝方法捕獲前端的數(shù)據(jù),例如用戶操作數(shù)據(jù)和系統(tǒng)性能指標(biāo),無需對前端系統(tǒng)中的每個控件進(jìn)行單獨(dú)埋點(diǎn),從而極大減少了開發(fā)工作量,無需對現(xiàn)有的前端系統(tǒng)進(jìn)行大規(guī)模的代碼修改和重部署,顯著降低了數(shù)據(jù)收集的成本。
1.一種前端的數(shù)據(jù)監(jiān)控方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在獲取前端的瀏覽器的原生任務(wù)之后,所述方法還包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述原生任務(wù)進(jìn)行包裹,封裝在house.js庫中,包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在監(jiān)控到任務(wù)執(zhí)行需求的情況下,調(diào)用所述house.js庫捕獲前端數(shù)據(jù),包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在監(jiān)控到任務(wù)執(zhí)行需求的情況下,調(diào)用所述house.js庫捕獲前端數(shù)據(jù),包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,在監(jiān)控到任務(wù)執(zhí)行需求的情況下,調(diào)用所述house.js庫捕獲前端數(shù)據(jù),包括:
7.根據(jù)權(quán)利要求1至6中任意一項所述的方法,其特征在于,在將所述原生任務(wù)進(jìn)行包裹,封裝在house.js庫中之后,所述方法還包括:
8.一種前端的數(shù)據(jù)監(jiān)控裝置,其特征在于,包括:
9.一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,其特征在于,所述計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)權(quán)利要求1至7中任意一項所述前端的數(shù)據(jù)監(jiān)控方法的步驟。
10.一種前端數(shù)據(jù)采集系統(tǒng),其特征在于,包括:一個或多個處理器,存儲器,以及一個或多個程序,其中,所述一個或多個程序被存儲在所述存儲器中,并且被配置為由所述一個或多個處理器執(zhí)行,所述一個或多個程序包括用于執(zhí)行權(quán)利要求1至7中任意一項所述的前端的數(shù)據(jù)監(jiān)控方法。