本發(fā)明涉及計算機技術(shù),尤其涉及一種React Native代碼運行狀態(tài)監(jiān)控方法及裝置。
背景技術(shù):
React Native是一項利用javascript和react構(gòu)建原生APP的技術(shù),React Native支持通過編寫JSX代碼來實現(xiàn)應(yīng)用程序的前端界面,支持動態(tài)下發(fā)代碼來實現(xiàn)界面和更改業(yè)務(wù)邏輯,從而使得移動終端中的應(yīng)用程序(Application,簡稱APP)及時地進行功能更新,讓用戶更快的體驗新功能,并且可以及時的修復(fù)一些問題,提供更好的用戶體驗。
但是,React Native雖然可以動態(tài)的下發(fā)代碼執(zhí)行程序,但是仍然依賴應(yīng)用程序為其提供運行的載體,并且其渲染和調(diào)用最終都會轉(zhuǎn)化為應(yīng)用程序的操作。如果在此過程中前端頁面或者應(yīng)用程序的載體頁出現(xiàn)執(zhí)行錯誤,則會導致APP不可用,影響用戶體驗。
因此,急需一種能夠監(jiān)控React Native代碼運行狀態(tài)的方法來及時發(fā)現(xiàn)React Native代碼運行的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種React Native代碼運行狀態(tài)監(jiān)控方法及裝置,用于監(jiān)控React Native代碼運行狀態(tài)。
本發(fā)明第一方面提供一種React Native代碼運行狀態(tài)監(jiān)控方法,包括:
接收打開第一前端頁面的請求;
判斷所述第一前端頁面前次運行時是否異常退出,若是,則將所述第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)加上1;
判斷所述第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)是否達到預(yù)設(shè)次數(shù),若是,則從服務(wù)器下載所述第一前端頁面的當前代碼;
使用所述載體頁加載第一前端頁面的當前代碼。
進一步地,還包括:
接收所述第一前端頁面發(fā)送的功能數(shù)據(jù),所述功能數(shù)據(jù)由所述第一前端頁面中所部署的功能代碼執(zhí)行后所獲得;
根據(jù)所述第一前端頁面所發(fā)送的功能數(shù)據(jù)判斷所述第一前端頁面是否存在執(zhí)行異常。
進一步地,所述判斷所述第一前端頁面前次運行時是否異常退出,包括:
判斷所述第一前端頁面所對應(yīng)的開閉標簽的值是否為打開,若是,則確定所述第一前端頁面前次運行時異常退出。
進一步地,還包括:
若使用所述載體頁加載第一前端頁面的當前代碼成功,則將所述第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為打開。
進一步地,還包括:
若所述第一前端頁面在加載成功之后成功退出,則將所述第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為關(guān)閉;
將所述第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)設(shè)置為0。
本發(fā)明第二方面提供一種React Native代碼運行狀態(tài)監(jiān)控裝置,包括:
第一接收模塊,用于接收打開第一前端頁面的請求;
第一判斷模塊,用于判斷所述第一前端頁面前次運行時是否異常退出,若是,則將所述第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)加上1;
第二判斷模塊,用于判斷所述第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)是否達到預(yù)設(shè)次數(shù),若是,則從服務(wù)器下載所述第一前端頁面的當前代碼;
加載模塊,用于使用所述載體頁加載第一前端頁面的當前代碼。
進一步地,還包括:
第二接收模塊,用于接收所述第一前端頁面發(fā)送的功能數(shù)據(jù),所述功能數(shù)據(jù)由所述第一前端頁面中所部署的功能代碼執(zhí)行后所獲得;
第三判斷模塊,用于根據(jù)所述第一前端頁面所發(fā)送的功能數(shù)據(jù)判斷所述第一前端頁面是否存在執(zhí)行異常。
進一步地,所述第一判斷模塊具體用于:
判斷所述第一前端頁面所對應(yīng)的開閉標簽的值是否為打開,若是,則確定所述第一前端頁面前次運行時異常退出。
進一步地,還包括:
第一設(shè)置模塊,用于若使用所述載體頁加載第一前端頁面的當前代碼成功,則將所述第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為打開。
進一步地,還包括:
第二設(shè)置模塊,用于若所述第一前端頁面在加載成功之后成功退出,則將所述第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為關(guān)閉;第三設(shè)置模塊,用于將第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)設(shè)置為0。
本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法及裝置,通過在載體頁加載第一前端頁面的代碼的過程中增加狀態(tài)判斷標簽,即增加第一前端頁面的連續(xù)異常退出次數(shù)的判斷,來判斷第一前端頁面的代碼是否存在異常,從而保證在React Native架構(gòu)下可以快速準確地識別前端頁面的代碼異常,實現(xiàn)了對React Native代碼的運行狀態(tài)的監(jiān)控,進而在第一前端頁面執(zhí)行出現(xiàn)問題時及時進行修正處理,提升用戶滿意度。
附圖說明
為了更清楚地說明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法的系統(tǒng)架構(gòu)圖;
圖2為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法實施例一的流程示意圖;
圖3為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法的整體流程圖;
圖4為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法實施例二的流程示意圖;
圖5為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控裝置實施例一的模塊結(jié)構(gòu)圖;
圖6為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控裝置實施例二的模塊結(jié)構(gòu)圖;
圖7為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控裝置實施例三的模塊結(jié)構(gòu)圖;
圖8為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控裝置實施例四的模塊結(jié)構(gòu)圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
圖1為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法的系統(tǒng)架構(gòu)圖,如圖1所示,該方法中涉及第一前端頁面、應(yīng)用程序以及服務(wù)器,其中,第一前端頁面是指APP所提供的可以供用戶在其上進行各種操作的頁面,應(yīng)用程序是指APP的處理程序,即Native,服務(wù)器是指APP廠商的后臺服務(wù)器。在該架構(gòu)中,第一前端頁面和應(yīng)用程序都位于用戶所操作的移動終端側(cè),而服務(wù)器則是APP廠商專門設(shè)置的服務(wù)器。其中,一個應(yīng)用程序可以對應(yīng)多個前端頁面,此處的第一前端頁面可以指一個應(yīng)用程序中的任意一個前端頁面。
在React Native架構(gòu)下,第一前端頁面對應(yīng)的代碼中可以部署多個功能代碼,例如埋點功能、定位功能等,第一前端頁面對應(yīng)的代碼可以保存在服務(wù)器中或者緩存在應(yīng)用程序的緩存中,當在APP中打開一個前端頁面時,應(yīng)用程序會通過其內(nèi)部的載體頁來從服務(wù)器或者應(yīng)用程序的緩存中加載第一前端頁面的代碼。
本發(fā)明通過在載體頁加載第一前端頁面的代碼的過程中增加狀態(tài)判斷標簽,以及根據(jù)第一前端頁面運行過程中所上報的功能數(shù)據(jù),來對React Native代碼的運行狀態(tài)進行監(jiān)控,以保證在第一前端頁面執(zhí)行出現(xiàn)問題時及時進行修正處理,提升用戶滿意度。
圖2為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法實施例一的流程示意圖,該方法站在應(yīng)用程序的角度進行描述,如圖1所示,該方法包括:
S101、接收打開第一前端頁面的請求。
當用戶點擊前端頁面時,應(yīng)用程序就會接收到打開該頁面的請求,此時,應(yīng)用程序首先會啟動載體頁。在React Native中,載體頁是React Native代碼運行的容器界面。當用戶點擊APP上的一個頁面時,應(yīng)用程序會接收到該請求,進而,應(yīng)用程序首先啟動載體頁,通過載體頁來加載頁面所對應(yīng)的JS代碼然后解析,進而動態(tài)生成頁面。一般情況下,當載體頁第一次從服務(wù)器下載頁面對應(yīng)的代碼后,會將頁面對應(yīng)的代碼緩存在應(yīng)用程序的緩存中,后續(xù)再加載時就可以直接使用應(yīng)用程序緩存中的代碼來加載。因此,載體頁加載第一前端頁面的代碼時,可能是從服務(wù)器或應(yīng)用程序的緩存中進行加載。
S102、判斷第一前端頁面前次運行時是否異常退出,若是,則將第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)加上1。
S103、判斷第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)是否達到預(yù)設(shè)次數(shù),若是,則從服務(wù)器下載第一前端頁面的當前代碼。
具體地,應(yīng)用程序在每次加載第一前端頁面之前,首先判斷第一前端頁面上一次運行時是否異常退出,如果是,就將第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)加1。
需要注意的是,第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)是指第一前端頁面連續(xù)異常退出的次數(shù),而不是累積的異常退出次數(shù)。
當?shù)谝磺岸隧撁娴倪B續(xù)異常退出次數(shù)達到了預(yù)設(shè)次數(shù),例如已經(jīng)達到2次,則可以確認第一前端頁面的代碼存在問題,此時,則應(yīng)用程序會從服務(wù)器下載第一前端頁面的當前代碼。其中,服務(wù)器中的第一前端頁面的當前代碼,是指第一前端頁面的最新代碼,因此,從服務(wù)器中下載到第一前端頁面的當前代碼后就能解決第一前端頁面之前存在的執(zhí)行問題。
S104、使用載體頁加載第一前端頁面的當前代碼。
當從服務(wù)器下載到最新的代碼后,應(yīng)用程序的載體頁就會重新加載第一前端頁面的最新的代碼。
本實施例中,通過在載體頁加載第一前端頁面的代碼的過程中增加狀態(tài)判斷標簽,即增加第一前端頁面的連續(xù)異常退出次數(shù)的判斷,來判斷第一前端頁面的代碼是否存在異常,從而保證在React Native架構(gòu)下可以快速準確地識別前端頁面的代碼異常,實現(xiàn)了對React Native代碼的運行狀態(tài)的監(jiān)控,進而在第一前端頁面執(zhí)行出現(xiàn)問題時及時進行修正處理,提升用戶滿意度。
在一種優(yōu)選的實施方式中,上述步驟S102中判斷第一前端頁面前次運行時是否異常退出的具體方法為:
判斷第一前端頁面所對應(yīng)的開閉標簽的值是否為打開,若是,則確定第一前端頁面前次運行時異常退出。
具體地,第一前端頁面所對應(yīng)的開閉標簽為本發(fā)明實施例所提出的一個判斷標簽,每個前端頁面都對應(yīng)唯一的一個開閉標簽,這個開閉標簽的值有兩個,一個為打開,一個為關(guān)閉。當?shù)谝磺岸隧撁婕虞d成功后,這個開閉標簽的值會被設(shè)置為打開,用來表示當前這個第一前端頁面被打開了。當用戶關(guān)閉第一前端頁面,即第一前端頁面正常退出時,這個開閉標簽的值被設(shè)置為關(guān)閉,用來表示當前這個第一前端頁面正常關(guān)閉了。正常情況下,當開始加載第一前端頁面的代碼時,第一前端頁面的開閉標簽的值應(yīng)該為關(guān)閉,而如果此時判斷出該開閉標簽的值為打開,則說明第一前端頁面之前被成功打開,但是并沒有成功退出,則可以確定第一前端頁面在上一次運行時異常退出。
本實施例中,通過設(shè)置這個開閉標簽,就可以快速地確定出第一前端頁面在前次運行時是否異常退出。
圖3為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法的整體流程圖,如圖3所示,該方法的整體執(zhí)行過程為:
S201、接收打開第一前端頁面的請求。
該步驟的具體執(zhí)行方法可參考前述實施例。
S202、獲取第一前端頁面的開閉標簽的值。
可選地,應(yīng)用程序中設(shè)置一個特定的文件,該應(yīng)用程序的所有前端頁面的開閉標簽的值以及連續(xù)異常退出次數(shù)的值都保存在該文件中,應(yīng)用程序可以從該文件中讀取開閉標簽和連續(xù)異常退出次數(shù)的值,同時,也可以向該文件中寫入開閉標簽和連續(xù)異常退出次數(shù)的新值。
S203、判斷第一前端頁面的開閉標簽的值是否為打開,若是,則執(zhí)行S204,若否,則執(zhí)行S205。
S204、第一前端頁面的連續(xù)異常退出次數(shù)加1。
該步驟的具體實施方式可以參照前述實施例。
S205、第一前端頁面的連續(xù)異常退出次數(shù)置為0。
本步驟中,當判斷出第一前端頁面的開閉標簽的值為關(guān)閉時,可以確定,第一前端頁面在上一次運行時成功退出了,進而可以確定第一前端頁面的代碼執(zhí)行是正常的,因此,此時,就將第一前端頁面的連續(xù)異常退出次數(shù)重新置為0。
S206、判斷連續(xù)異常退出次數(shù)是否達到預(yù)設(shè)次數(shù),若是,則執(zhí)行S207,否則執(zhí)行S209。
S207、從服務(wù)器下載第一前端頁面的當前代碼。
當判斷出第一前端頁面的連續(xù)異常退出次數(shù)達到預(yù)設(shè)次數(shù),例如已經(jīng)達到2次時,可以確定第一前端頁面的代碼存在問題,此時,應(yīng)用程序會從服務(wù)器中下載第一前端頁面的最新代碼,即當前代碼。之后執(zhí)行S209。
S208、向服務(wù)器上報異常,之后結(jié)束。
在從服務(wù)器下載第一前端頁面的最新代碼之后,應(yīng)用程序還會向服務(wù)器上報異常,以告知服務(wù)器第一前端頁面之前的代碼執(zhí)行出現(xiàn)問題,以使得服務(wù)器根據(jù)所上報的異常對第一前端頁面之前的代碼進行分析等。
S209、載體頁開始加載第一前端頁面的當前代碼。
S2010-S2011、加載完成后,判斷第一前端頁面的界面功能是否正常,若是,則執(zhí)行S2012,若否,則執(zhí)行S2015。
S2012、將第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為打開。
當判斷出第一前端頁面的界面功能正常,則說明使用所述載體頁加載第一前端頁面的當前代碼成功,此時,將第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為打開,來表示第一前端頁面已經(jīng)被打開。
S2013、第一前端頁面成功退出時,將第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為關(guān)閉。
當?shù)谝磺岸隧撁嬖诩虞d成功之后成功退出,例如由用戶點擊退出按鈕退出,此時,將第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為關(guān)閉,來表示第一前端頁面已經(jīng)正常退出。
S2014、將第一前端頁面的連續(xù)異常退出次數(shù)置為0,并結(jié)束。
當?shù)谝磺岸隧撁嬲M顺鰰r,可以確定第一前端頁面的代碼執(zhí)行是正常的,因此,此時,就將第一前端頁面的連續(xù)異常退出次數(shù)重新置為0。
S2015、向服務(wù)器上報異常。
如果第一前端頁面加載出現(xiàn)異常,則向服務(wù)器上報異常,以使得服務(wù)器對第一前端頁面的代碼進行進一步的分析。
S2016、顯示加載錯誤界面。
當?shù)谝磺岸隧撁婕虞d出現(xiàn)異常時,應(yīng)用程序還會向用戶顯示一個加載錯誤界面,以使得用戶得知頁面加載出現(xiàn)異常,從而提升用戶感受。
圖4為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控方法實施例二的流程示意圖,如圖4所示,該方法還包括:
S301、接收第一前端頁面發(fā)送的功能數(shù)據(jù),該功能數(shù)據(jù)由第一前端頁面中所部署的功能代碼執(zhí)行后所獲得。
具體地,在React Native架構(gòu)下,第一前端頁面對應(yīng)的代碼中可以部署多個功能代碼,例如埋點功能、定位功能等,這些功能代碼在第一前端頁面被打開之后都會根據(jù)預(yù)設(shè)的流程來執(zhí)行,以獲取其希望獲取的數(shù)據(jù)。
S302、根據(jù)第一前端頁面所發(fā)送的功能數(shù)據(jù)判斷第一前端頁面是否存在執(zhí)行異常。
當?shù)谝磺岸隧撁嬷械墓δ艽a獲取到對應(yīng)的功能數(shù)據(jù)之后,會將這些數(shù)據(jù)按照一定的規(guī)則發(fā)送給應(yīng)用程序,應(yīng)用程序通過判斷這些數(shù)據(jù)是否符合規(guī)則的要求來確定第一前端頁面是否存在執(zhí)行異常。例如,當?shù)谝磺岸隧撁娴墓δ艽a調(diào)用了一個不存在接口,或者,當?shù)谝磺岸隧撁姘l(fā)送了一個錯誤的不符合規(guī)則的內(nèi)容,則應(yīng)用程序就可以確定第一前端頁面的功能代碼出現(xiàn)異常,進而可以根據(jù)這些異常來進行相應(yīng)的處理。
圖5為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控裝置實施例一的模塊結(jié)構(gòu)圖,如圖5所示,該裝置包括:
第一接收模塊501,用于接收打開第一前端頁面的請求。
第一判斷模塊502,用于判斷第一前端頁面前次運行時是否異常退出,若是,則將第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)加上1。
第二判斷模塊503,用于判斷第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)是否達到預(yù)設(shè)次數(shù),若是,則從服務(wù)器下載第一前端頁面的當前代碼。
加載模塊504,用于使用載體頁加載第一前端頁面的當前代碼。
該裝置用于實現(xiàn)前述方法實施例,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
圖6為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控裝置實施例二的模塊結(jié)構(gòu)圖,如圖6所示,還包括:
第二接收模塊505,用于接收第一前端頁面發(fā)送的功能數(shù)據(jù),功能數(shù)據(jù)由第一前端頁面中所部署的功能代碼執(zhí)行后所獲得。
第三判斷模塊506,用于根據(jù)第一前端頁面所發(fā)送的功能數(shù)據(jù)判斷第一前端頁面是否存在執(zhí)行異常。
另一實施例中,第一判斷模塊502具體用于:
判斷第一前端頁面所對應(yīng)的開閉標簽的值是否為打開,若是,則確定第一前端頁面前次運行時異常退出。
圖7為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控裝置實施例三的模塊結(jié)構(gòu)圖,如圖7所示,還包括:
第一設(shè)置模塊507,用于若使用載體頁加載第一前端頁面的當前代碼成功,則將第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為打開。
圖8為本發(fā)明所提供的React Native代碼運行狀態(tài)監(jiān)控裝置實施例四的模塊結(jié)構(gòu)圖,如圖8所示,還包括:
第二設(shè)置模塊508,用于若第一前端頁面在加載成功之后成功退出,則將第一前端頁面所對應(yīng)的開閉標簽的值設(shè)置為關(guān)閉。
第三設(shè)置模塊509,用于將第一前端頁面所對應(yīng)的連續(xù)異常退出次數(shù)設(shè)置為0。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。